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

标签 mysql date-comparison

有人可以解释一下如何评估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'。将它们转换为DATE:

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 列的 native MySQL 日期,则无需进行转换 - MySQL 知道该如何处理这些。这只是这里的一个问题,因为您给了它原始字符串。

关于mysql - MySQL 如何比较日期时间和日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48935467/

相关文章:

mysql - 如何删除重复的行但仅限于每个产品 ID

php - HTML/PHP 表单被取消并隐藏?

php - PDO 锁定表行 INNODB

java - 比较月份和年份的两个日期值

mysql - 来自 Yii2 中多个表的 SQL 请求

java - 在服务器上部署一段时间后无法连接数据库

PowerShell 日期比较

go - 为什么与 == 相比,具有相同日期和时间的 2 个时间结构返回 false?

swift3 - 如何在 swift 3.0 中比较日期?

php - 日期时间比较 PHP