我在mysql表中有记录,我想知道过去3,7和12小时内有多少条记录。那个sql会是什么?我的日期字段格式为
2010-08-09 09:52:27
2010-08-09 09:52:27
2010-08-09 09:52:27
2010-08-09 10:44:46
2010-08-09 10:44:46
2010-08-09 11:58:27
2010-08-09 14:48:22
2010-08-09 14:48:22
答案 0 :(得分:7)
过去三个小时:
WHERE column BETWEEN DATE_SUB(NOW(), INTERVAL 3 HOUR)
AND NOW()
过去七个小时:
WHERE column BETWEEN DATE_SUB(NOW(), INTERVAL 7 HOUR)
AND NOW()
过去十二小时:
WHERE column BETWEEN DATE_SUB(NOW(), INTERVAL 12 HOUR)
AND NOW()
如果您想将数据指定为字符串,请使用:
WHERE column BETWEEN DATE_SUB(STR_TO_DATE('2010-07-08 07:57:45', '%Y-%m-%d %T'), INTERVAL 3 HOUR)
AND STR_TO_DATE('2010-07-08 07:57:45', '%Y-%m-%d %T')
......但老实说,你也可以使用它:
WHERE column BETWEEN STR_TO_DATE('2010-07-08 04:57:45', '%Y-%m-%d %T')
AND STR_TO_DATE('2010-07-08 07:57:45', '%Y-%m-%d %T')
如果这不起作用,那么我想知道该列是否将值存储为字符串/ varchar而不是DATETIME。
参考:
答案 1 :(得分:1)
假设将来没有记录带有时间戳,您可以使用:
WHERE myDateField > DATE_SUB(NOW(), INTERVAL 3 HOUR)
最近三小时的记录,同样是7小时和12小时。