我想比较两个日期和时间,我想要所有结果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'
提前致谢!
答案 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输出 -
它应该是完美的。
答案 2 :(得分:4)
即使考虑到时间,您的查询显然也会返回所有正确的日期。
如果您对结果仍然不满意,请给DATEDIFF一个镜头,并查看两个日期之间的否定/肯定结果。
确保您的mydate
列是datetime
类型。
答案 3 :(得分:3)
你想订购吗?
Select * From temp where mydate > '2009-06-29 04:00:44' ORDER BY mydate;