日期时间比较在MySQL中返回错误结果

时间:2019-01-03 09:27:38

标签: php mysql percona

当以下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字段是日期时间字段。

感谢您对高级的任何了解。

0 个答案:

没有答案