Mysql比较两个日期时间字段

MyS*_*DBA 40 mysql datetime compare field

我想比较两个日期和时间,我想要所有的结果 from tbl where date1 > date2

Select * From temp where mydate > '2009-06-29 04:00:44';
Run Code Online (Sandbox Code Playgroud)

但它只是比较日期而不是时间.它给了我今天日期的所有结果集

'2009-06-29 11:08:57'
'2009-06-29 11:14:35'
'2009-06-29 11:12:38'
'2009-06-29 11:37:48'
'2009-06-29 11:52:17'
'2009-06-29 12:12:50'
'2009-06-29 12:13:38'
'2009-06-29 12:19:24'
'2009-06-29 12:27:25'
'2009-06-29 12:28:49'
'2009-06-29 12:35:54'
'2009-06-29 12:36:54'
'2009-06-29 12:49:57'
'2009-06-29 12:58:04'
'2009-06-29 04:13:20'
'2009-06-29 04:56:19'
'2009-06-29 05:00:23'
'2009-06-29 05:04:26'
'2009-06-29 05:08:17'
'2009-06-29 05:26:57'
'2009-06-29 05:29:06'
'2009-06-29 05:32:11'
'2009-06-29 05:52:07'
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Jer*_*yth 62

您要显示的查询作为示例:

SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44';
Run Code Online (Sandbox Code Playgroud)

04:00:00是凌晨4点,所以你显示的所有结果都是之后,这是正确的.

如果要在下午4点后显示所有内容,则需要在查询中使用正确的(24小时)表示法.

为了使事情更清楚,试试这个:

SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp;
Run Code Online (Sandbox Code Playgroud)

这将显示日期和12小时的时间.


小智 12

您可以使用以下SQL来比较日期和时间 -

Select * From temp where mydate > STR_TO_DATE('2009-06-29 04:00:44', '%Y-%m-%d %H:%i:%s');
Run Code Online (Sandbox Code Playgroud)

当我在问题中提到的同一类表和字段上使用相同的SQL时附加了mysql输出 -

在此输入图像描述

它应该工作完美.


Sam*_*son 6

您的查询显然返回了所有正确的日期,即使考虑到时间。

如果您仍然对结果不满意,请尝试 DATEDIFF 并在两个日期之间寻找负面/正面结果。

确保您的mydate列是一种datetime类型。