我面临一个问题,当从 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)