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

kkih6yb8  于 2023-04-19  发布在  Mysql
关注(0)|答案(9)|浏览(158)

我需要在MySQL中比较日期,忽略DateTime列中的时间部分。

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

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

zy1mlcev

zy1mlcev1#

@Mark已经有了很好的方法,但要小心,在这种情况下,你总是要计算并找到第二天。如果你想避免这种情况,仍然忽略时间,你可以做以下事情:

WHERE order_date >= '2012-05-27 00:00:00' AND order_date <= '2012-05-27 23:59:59'

我希望这是有意义的。

owfi6suc

owfi6suc2#

SELECT * FROM order_table WHERE date(order_date) = '2012-05-03';
s3fp2yjn

s3fp2yjn3#

也许,你可以使用像date()这样的函数。但是在这种情况下,速度会降低,因为索引不能使用。所以,我推荐使用

SELECT * FROM order_table 
WHERE order_date between('2012-05-03 0:0:0' and '2012-05-03 23:59:59')
mrzz3bfm

mrzz3bfm4#

这有点旧了....但正确的答案也是在order_date列使用date_format,如下所示:

SELECT * FROM order_table where date_format(order_date, '%Y-%m-%d')='2012-05-03';
r7s23pms

r7s23pms5#

在MySQL中比较日期时,可以使用以下方法之一:

DATEDIFF() Subtract two dates
TIMEDIFF() Subtract time
TIMESTAMPDIFF() Subtract an interval from a datetime expression
PERIOD_DIFF()   Return the number of months between periods

了解有关日期函数MySQL documentation的更多信息。

mspsb9vt

mspsb9vt6#

在我的例子中,我有DATE_FORMATCONVERT_TZ
唯一对我有用的就是这个

DATE_FORMAT(CONVERT_TZ(`order_item`.created, '+0:00', '+2:00'), '%d/%m/%Y %H:%i') 

BETWEEN 
('12/02/2018 01:42') 
AND 
('12/02/2018 10:51')
brqmpdu1

brqmpdu17#

你也可以这样做,如果你想保持格式不变。

select DATE_FORMAT(order_date, '%d/%m/%Y') as order_date from order_table  
    where DATE_FORMAT(order_date, '%d/%m/%Y') >= '18/04/2023'

select DATE_FORMAT(order_date, '%d/%m/%Y') as order_date from order_table  
        where DATE_FORMAT(order_date, '%d/%m/%Y') between '18/04/2023' and 
        '20/04/2023'

例如。

q5iwbnjs

q5iwbnjs8#

你可以使用DATE函数:

SELECT col1, col2, ..., coln
FROM order_table
WHERE date(order_date) = '2012-05-03'

但如果你的表很大,并且你在order date上有一个索引,那么这会更有效:

SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date >= '2012-05-03'
AND order_date < '2012-05-04'
bpsygsoo

bpsygsoo9#

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

where YEAR(order_date)='2012' AND MONTH(order_date)='05' AND DAY(order_date)='03'

您可以查看this以获取更多功能。

相关问题