当以下mysql查询返回不一致的结果并且试图找出原因时,我遇到了一个不寻常的问题。我已经找到了一个有效的查询,但是我想了解为什么查询无法按预期工作:
SELECT id, ExpiryDate
FROM sites
WHERE ExpiryDate >= '2018-12-24 00:00:00'
AND ExpiryDate <= '2019-01-01 00:00:00'
这些是我为比较而运行的以下测试:
MySQL通过shell =正确的结果
MySQL Workbench =正确的结果
DBeaver =错误的结果
PHPStorm SQL控制台=错误的结果
PHP 7.0脚本=错误的结果
显然,预期结果将是ExpiryDate在提供的两个日期之间的记录。但是,在结果返回错误的情况下,我们会获得记录,记录的日期早于2018年12月24日。
我将查询更改为以下有效的方法:
SELECT id, ExpiryDate
FROM sites
WHERE UNIX_TIMESTAMP(ExpiryDate)
BETWEEN UNIX_TIMESTAMP('2018-12-24 00:00:00')
AND UNIX_TIMESTAMP('2019-01-01 00:00:00')
我很想了解为什么第一个查询返回错误的结果?这是PHP Bug,MySQL Bug还是我做错了什么?运行MySQL 5.6和PHP 7.0。 PHP通过mysqli扩展名运行。我已经在多台计算机上确认了此问题,并确认所有运行相同的数据库数据。 ExpiryDate字段是日期时间字段。
感谢您对高级的任何了解。