php - 迁移后,时间戳 < 1 上的 MySQL 查询停止工作

标签 php mysql

我已将 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/

相关文章:

php - MYSQL插入记录跳过ids(自动递增)

java - 路线 [product.store] 未定义。 (查看: C:\xampp\htdocs\hijabrent\resources\views\product\create. blade.php)

mysql - 向包含特定字符串的每一行添加值

mysql - 授予与 MysQL 5.0 中的模式匹配的一组数据库的权限

java - 在ListView中显示JsonArray

php - MySQL 找到第一个可用的周末

php - 如何使 $_SESSION 更安全?

php - 遇到此错误的问题

php - 尽管使用 PHP 具有适当的权限,但权限被拒绝

mysql - 如何在 Rails 中有效地获取这些代理 ID