Mysql比较两个日期时间字段

时间:2009-06-29 12:28:04

标签: mysql datetime compare field

我想比较两个日期和时间,我想要所有结果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 个答案:

答案 0 :(得分:61)

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

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

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

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

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

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

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

答案 1 :(得分:12)

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

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

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

enter image description here

它应该是完美的。

答案 2 :(得分:4)

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

如果您对结果仍然不满意,请给DATEDIFF一个镜头,并查看两个日期之间的否定/肯定结果。

确保您的mydate列是datetime类型。

答案 3 :(得分:3)

你想订购吗?

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