我已将 XAMPP 服务器从一台笔记本电脑迁移到另一台笔记本电脑(新笔记本电脑)。 我的旧笔记本电脑上有 XAMPP 64 位版本,我在新笔记本电脑上安装了 32 位版本。
迁移后,我找不到任何 pages
一些表中的数据。
调试后,以下查询似乎停止工作:
SELECT * FROM `pages` WHERE f_site_id = '1' AND deactivation_date < 1;
我使用值初始化 deactivation_date 字段:0000-00-00 00:00:00
.
将查询从上面更改为以下后:
SELECT * FROM `pages` WHERE f_site_id = '1' AND deactivation_date = '0000-00-00';
看起来又恢复正常了。
谁能向我解释一下为什么会发生上述情况?
我在很多地方都有一个检查 timestamp < 1
的查询。在替换所有查询之前,我想知道为什么会发生这种情况。
编辑 最后一个查询是检查空时间戳的正确方法吗?
最佳答案
您没有提及 MySQL 的新旧版本,因此很难准确确定这一点。
旧版本的 MySQL 有 SQL 严格模式,并且 NO_ZERO_IN_DATE模式,禁用。因此,将一个小整数转换为 DATE
将生成一个有效的(如果非常早的日期)。
以后的版本不会这样做。当您尝试将一个小整数转换为 DATE
时,较新的 MySQL 产生 NULL
。并且,anything < NULL
产生错误。
我认为这就是发生在你身上的事情。随着时间的推移,MySQL 和 MariaDB 团队正在稳步尝试摆脱数据类型的草率。
关于php - 迁移后,时间戳 < 1 上的 MySQL 查询停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35240443/