MySQL 如何比较日期时间和日期?
How does MySQL compare datetime to date?
有人可以解释一下 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
s:
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
列的原生 MySQL 日期 - MySQL,则无需转换知道如何处理这些。这只是这里的一个问题,因为你给了它原始字符串。
有人可以解释一下 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
s:
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
列的原生 MySQL 日期 - MySQL,则无需转换知道如何处理这些。这只是这里的一个问题,因为你给了它原始字符串。