MySQL 如何比较日期时间和日期?

How does MySQL compare datetime to date?

有人可以解释一下 datedatetime 之间的比较是如何评估的吗?当在一侧指定时间而不在​​另一侧指定时间时,它与什么进行比较?例如:

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'。将它们转换为 DATEs:

SELECT CAST('2018-01-01 00:00:00' AS DATE) > CAST('2018-01-01' AS DATE)

DATETIMEs:

SELECT CAST('2018-01-01 00:00:00' AS DATETIME) > CAST('2018-01-01' AS DATETIME)

如果您要比较来自 DATEDATETIMETIMESTAMP 列的原生 MySQL 日期 - MySQL,则无需转换知道如何处理这些。这只是这里的一个问题,因为你给了它原始字符串。