有人可以解释一下如何评估date
和datetime
之间的比较吗?当一侧指定时间而另一侧未指定时,它是在与什么进行比较?例如:
SELECT '2018-01-01 00:00:00' > '2018-01-01'
是1
,但是
SELECT '2018-01-01' > '2018-01-01'
是0
我认为如果没有指定时间,dbms 会假设00:00:00
,但显然情况并非如此。为什么我上面的第一个比较评估结果为真,而第二个比较则不然?
最佳答案
这些不是日期,而是字符串 - 您不妨运行 SELECT 'A' > 'B'
。将它们转换为DATE
:
SELECT CAST('2018-01-01 00:00:00' AS DATE) > CAST('2018-01-01' AS DATE)
或到DATETIME
s:
SELECT CAST('2018-01-01 00:00:00' AS DATETIME) > CAST('2018-01-01' AS DATETIME)
如果您要比较来自 DATE
、DATETIME
或 TIMESTAMP
列的 native MySQL 日期,则无需进行转换 - MySQL 知道该如何处理这些。这只是这里的一个问题,因为您给了它原始字符串。
关于mysql - MySQL 如何比较日期时间和日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48935467/