如何为MySQL变量设置时间戳?

匿名之一

无法弄清楚@previousEndTime变量仅具有YEAR值的原因。

我的test_table上的样本数据:

| id |   name |                     start |                       end |
|----|--------|---------------------------|---------------------------|
|  2 | test 1 | January, 01 2016 12:00:00 | January, 01 2016 13:00:00 |
|  3 | test 1 | January, 02 2016 11:00:00 | January, 02 2016 12:00:00 |
|  5 | test 1 | January, 03 2016 15:00:00 | January, 03 2016 16:00:00 |
|  6 | test 2 | January, 01 2016 10:00:00 | January, 01 2016 11:00:00 |
|  7 | test 2 | January, 02 2016 17:00:00 | January, 02 2016 18:00:00 |



SELECT
        id,
        name,
        @previousEndTime,
        @previousEndTime := end     
    FROM
        test_table, (SELECT @previousEndTime := 0) var
    ORDER BY name, id;

当前结果:

| id |   name | @previousEndTime | @previousEndTime := end |
|----|--------|------------------|-------------------------|
|  2 | test 1 |                0 |     2016-01-01 13:00:00 |
|  3 | test 1 |             2016 |     2016-01-02 12:00:00 |
|  5 | test 1 |             2016 |     2016-01-03 16:00:00 |
|  6 | test 2 |             2016 |     2016-01-01 11:00:00 |
|  7 | test 2 |             2016 |     2016-01-02 18:00:00 |

预期结果:

| id |   name |     @previousEndTime| @previousEndTime := end |
|----|--------|---------------------|-------------------------|
|  2 | test 1 |                0    |     2016-01-01 13:00:00 |
|  3 | test 1 |2016-01-01 13:00:00  |     2016-01-02 12:00:00 |
|  5 | test 1 |2016-01-02 12:00:00  |     2016-01-03 16:00:00 |
|  6 | test 2 |2016-01-03 16:00:00  |     2016-01-01 11:00:00 |
|  7 | test 2 |2016-01-01 11:00:00  |     2016-01-02 18:00:00 |

请检查此FIDDLE

笔记:

我尝试过的其他方式:

@previousEndTime := CONCAT('',end,'')

@previousEndTime := TIMESTAMP(CONCAT('',end,''))    
空白的

看看这个;)

SQL小提琴

MySQL 5.6模式

DROP TABLE IF EXISTS `test_table`;
CREATE TABLE `test_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) CHARACTER SET utf8 NOT NULL,
  `start` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  `end` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
);
INSERT INTO `test_table` VALUES ('2', 'test 1', '2016-01-01 12:00:00', '2016-01-01 13:00:00');
INSERT INTO `test_table` VALUES ('3', 'test 1', '2016-01-02 11:00:00', '2016-01-02 12:00:00');
INSERT INTO `test_table` VALUES ('5', 'test 1', '2016-01-03 15:00:00', '2016-01-03 16:00:00');
INSERT INTO `test_table` VALUES ('6', 'test 2', '2016-01-01 10:00:00', '2016-01-01 11:00:00');
INSERT INTO `test_table` VALUES ('7', 'test 2', '2016-01-02 17:00:00', '2016-01-02 18:00:00');

查询1

SELECT
    id,
    name,
    if(@previousEndTime='0000-00-00 00:00:00',0,@previousEndTime),
    @previousEndTime := end     
FROM
    test_table,
    (
        SELECT
            @previousEndTime := '0000-00-00 00:00:00'
    ) var
ORDER BY name, id

结果

| id |   name | if(@previousEndTime='0000-00-00 00:00:00',0,@previousEndTime) | @previousEndTime := end |
|----|--------|---------------------------------------------------------------|-------------------------|
|  2 | test 1 |                                                             0 |     2016-01-01 13:00:00 |
|  3 | test 1 |                                           2016-01-01 13:00:00 |     2016-01-02 12:00:00 |
|  5 | test 1 |                                           2016-01-02 12:00:00 |     2016-01-03 16:00:00 |
|  6 | test 2 |                                           2016-01-03 16:00:00 |     2016-01-01 11:00:00 |
|  7 | test 2 |                                           2016-01-01 11:00:00 |     2016-01-02 18:00:00 |

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为嵌套循环设置变量?

来自分类Dev

如何为simple_form时间输入设置默认时间

来自分类Dev

如何在MySQL表中创建2个自动设置的时间戳列?

来自分类Dev

如何为MySQL设置密码?

来自分类Dev

如何为时间戳签名启用LTV?

来自分类Dev

将列设置为MySql工作台中的时间戳?

来自分类Dev

如何为领域android中的每个插入和更新行设置当前时间戳

来自分类Dev

在MySQL中将时间戳列的默认值设置为2时间戳的总和?

来自分类Dev

原则:如何手动设置实体的MySQL时间戳

来自分类Dev

如何为anacron设置环境变量?

来自分类Dev

如何为猫鼬模式子字段添加时间戳?

来自分类Dev

如何为通知视图设置带有时间戳的模式

来自分类Dev

如何为anacron设置环境变量?

来自分类Dev

如何从Unix时间戳设置系统时间

来自分类Dev

如何为PHP设置环境变量?

来自分类Dev

如何为进程设置DISPLAY变量?

来自分类Dev

如何在MySQL时间戳中设置时间?

来自分类Dev

如何为MySQL设置密码?

来自分类Dev

设置PHP和Mysql时间戳

来自分类Dev

如何为activeElement设置变量?

来自分类Dev

如何比较mysql时间戳和jquery时间戳?

来自分类Dev

选择MySQL数据并根据时间戳列设置变量的值

来自分类Dev

在MySQL中将时间戳列的默认值设置为2时间戳的总和?

来自分类Dev

如何为MySQL变量设置时间戳?

来自分类Dev

如何为CMakefile设置多元素变量

来自分类Dev

如何为变量设置速记别名?

来自分类Dev

如何为变量设置范围

来自分类Dev

如何为日期时间变量分配类型

来自分类Dev

如何为 Logging 设置当前时间(-zone)?