比较MySQL中的日期,忽略DateTime字段的时间部分

Tin*_*iny 37 mysql datetime date date-comparison

我需要比较MySQL中的日期,忽略DateTime列中的时间部分.我尝试了以下SQL.

SELECT * FROM order_table where order_date=date_format('2012-05-03', '%Y-%m-%d');
Run Code Online (Sandbox Code Playgroud)

即使2012-05-03 10:16:46MySQL表中有日期,它也不会检索任何行.DateTime在比较MySQL中的日期时,如何忽略字段中的时间部分?

Mar*_*ers 58

你可以使用这个DATE功能:

SELECT col1, col2, ..., coln
FROM order_table
WHERE date(order_date) = '2012-05-03'
Run Code Online (Sandbox Code Playgroud)

但是如果您的表很大并且索引有以下内容,则效率更高order date:

SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date >= '2012-05-03'
AND order_date < '2012-05-04'
Run Code Online (Sandbox Code Playgroud)


Jam*_*ack 8

如果你想传递一个日期,那么你可以尝试这样的事情:

where YEAR(order_date)='2012' AND MONTH(order_date)='05' AND DAY(order_date)='03'
Run Code Online (Sandbox Code Playgroud)

您可以查看功能以获取更多功能.


lan*_*nzz 6

SELECT * FROM order_table WHERE date(order_date) = '2012-05-03';
Run Code Online (Sandbox Code Playgroud)

  • 这不能在“order_date”上使用索引 (2认同)

dee*_*eej 5

@Mark 有很好的方法,但请注意,在这种情况下,您将始终必须计算并找到第二天。如果您想避免这种情况并仍然忽略时间,您可以执行以下操作:

WHERE order_date >= '2012-05-27 00:00:00' AND order_date <= '2012-05-27 23:59:59'
Run Code Online (Sandbox Code Playgroud)

我希望这是有道理的。