关于时间戳的MySQL查询<迁移后1停止工作

时间:2016-02-06 11:25:25

标签: php mysql

我已将XAMPP服务器从一台笔记本电脑迁移到另一台笔记本电脑(新笔记本电脑)。 我的旧笔记本电脑上有一个XAMPP 64位版本,我在新笔记本电脑上安装了32位版本。

迁移后,我无法从某些表中获取任何pages数据。 调试后,出现以下查询停止工作:

SELECT * FROM `pages` WHERE f_site_id = '1' AND deactivation_date < 1;

我使用值0000-00-00 00:00:00初始化deactivation_date字段。

将查询从上面更改为以下内容:

SELECT * FROM `pages` WHERE f_site_id = '1' AND deactivation_date = '0000-00-00';

似乎再次正常工作。

任何人都可以向我解释上述原因吗? 有更多地方我有查询检查timestamp < 1,在我更换所有查询之前,我想知道为什么会发生这种情况。

修改 并且最后一个查询是检查空时间戳的正确方法吗?

1 个答案:

答案 0 :(得分:2)

你没有提及你的新旧MySQL版本,因此很难确切地说明这一点。

较旧版本的MySQL具有SQL严格模式,而NO_ZERO_IN_DATE模式已禁用。因此,将一个小整数作为DATE生成将生成一个有效的,如果非常早的日期。

以后的版本不会这样做。当您尝试将小整数转换为DATE时,较新的MySQL会产生NULL。而且,anything < NULL会产生错误。

我认为发生了什么事。随着时间的推移,MySQL和MariaDB团队正在稳步地试图摆脱数据类型的邋。。