Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较MySQL中的日期忽略DateTime字段的时间部分_Mysql_Date_Datetime_Date Comparison - Fatal编程技术网

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

比较MySQL中的日期忽略DateTime字段的时间部分,mysql,date,datetime,date-comparison,Mysql,Date,Datetime,Date Comparison,我需要比较MySQL中的日期,忽略DateTime列中的时间部分。我尝试了以下SQL SELECT * FROM order_table where order_date=date_format('2012-05-03', '%Y-%m-%d'); 即使MySQL表中有日期2012-05-03 10:16:46,它也不会检索任何行。在MySQL中比较日期时,如何忽略DateTime字段中的时间部分?您可以使用以下函数: SELECT col1, col2, ..., coln FROM ord

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

SELECT * FROM order_table where order_date=date_format('2012-05-03', '%Y-%m-%d');
即使MySQL表中有日期
2012-05-03 10:16:46
,它也不会检索任何行。在MySQL中比较日期时,如何忽略
DateTime
字段中的时间部分?

您可以使用以下函数:

SELECT col1, col2, ..., coln
FROM order_table
WHERE date(order_date) = '2012-05-03'
但是,如果您的表很大,并且您在
订单日期上有一个索引,那么这会更有效:

SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date >= '2012-05-03'
AND order_date < '2012-05-04'
选择col1、col2、…、coln
从订单表格
其中订单日期>='2012-05-03'
订单日期<'2012-05-04'

如果您想输入日期,可以尝试以下方法:

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

您可以查看更多函数。

也许,您可以使用类似的函数。但在这种情况下,速度可能会降低,因为索引无法使用。因此,我建议使用

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

@马克有一个很好的方法,但要小心,在这种情况下,你总是要计算并在第二天找到。如果您想避免这种情况,并且仍然忽略时间,您可以执行以下操作:

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

其中order_date>='2012-05-27 00:00:00'和order_date在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的更多最新函数。

这有点旧了。。。。但正确的答案也是在列order_date处使用date_格式,如下所示:

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

在我的例子中,我有,
DATE\u格式
CONVERT\u-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')

订单日期的数据类型是什么?这不能在
订单日期上使用索引
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')