54

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

Select * From temp where mydate > '2009-06-29 04:00:44';

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

'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'

提前致谢!

4

4 回答 4

75

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

SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44';

04:00:00 是凌晨 4 点,因此您显示的所有结果都在那之后出现,这是正确的。

如果您想在下午 4 点之后显示所有内容,则需要在查询中使用正确的 (24hr) 表示法。

为了让事情更清楚一点,试试这个:

SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp;

这将向您显示日期及其 12 小时时间。

于 2009-06-29T12:47:02.413 回答
16

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

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

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

在此处输入图像描述

它应该工作完美。

于 2014-01-29T09:05:21.343 回答
7

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

如果您仍然对结果不满意,请试一试 DATEDIFF 并在两个日期之间寻找阴性/阳性结果。

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

于 2009-06-29T12:32:20.290 回答
4

你想订购吗?

Select * From temp where mydate > '2009-06-29 04:00:44' ORDER BY mydate;
于 2009-06-29T12:36:55.773 回答