小编Mau*_*cho的帖子

TIME 函数在 5.5 和 5.6 之间变化

我面临一个问题,当从 MySQL 5.5.46 迁移到 MySQL 5.6.34 时,我无法使用 TIME 函数获得相同的结果。问题是,当我在 5.5 中使用 TIME 函数时,它在 datetime 为“0000-00-00 00:00:00”时返回 NULL,但前提是它是来自表的值,但使用 5.6 我得到'00:00:00'。这听起来不错,但是有许多查询依赖于 5.5 的行为(结果为 NULL)。这是我为准确测试该行为所做的示例:

一、表:

CREATE TABLE `prueba_time` (
  `check_in` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

然后我插入一行值为 0000-00-00 00:00:00

mysql> INSERT INTO prueba_time VALUES ('0000-00-00 00:00:00');
Run Code Online (Sandbox Code Playgroud)

然后我测试了TIME函数……5.5中的结果是:

mysql> SELECT TIME(check_in),check_in,TIME('0000-00-00 00:00:00') FROM prueba_time;
+----------------+---------------------+-----------------------------+
| TIME(check_in) | check_in            | TIME('0000-00-00 00:00:00') |
+----------------+---------------------+-----------------------------+
| NULL           | 0000-00-00 00:00:00 | 00:00:00                    |
+----------------+---------------------+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

和 5.6 中的相同查询:

mysql> SELECT TIME(check_in),check_in,TIME('0000-00-00 00:00:00') FROM prueba_time; …
Run Code Online (Sandbox Code Playgroud)

mysql mysql-5.5 functions mysql-5.6

5
推荐指数
1
解决办法
288
查看次数

标签 统计

functions ×1

mysql ×1

mysql-5.5 ×1

mysql-5.6 ×1