2012-03-31 123 views
1

在我的SQL查询中,如何查找过去24小时内的记录? 我正在使用time()函数插入数据库。 我使用时间戳的时间存储在该format.Eg 1332673046在过去24小时内查找带有时间字段的记录

+0

可能重复的[MySQL:记录插入小时,过去24小时](http://stackoverflow.com/questions/2783740/mysql-records-inserted-by-hour-for-the-last-24 -hours) – bernie 2012-03-31 08:02:58

+0

记录是否包含任何时间戳记/日期时间列? – 2012-03-31 08:04:07

+0

@Shiplu是的,我正在使用时间戳。 – 2012-03-31 08:09:50

回答

1
select somefield from yourtable where timefield >= subtime(current_timestamp(), '1 00:00:00'); 
+0

当我在mysql中运行时它不工作,它说'MySQL返回了一个空的结果集(即零行)'。 – 2012-03-31 08:15:49

+0

零行不是错误。这意味着,没有与条件匹配的行。如果所有行都超过24小时,或者表格为空,则会发生这种情况。 – 2012-03-31 08:19:09

+0

但问题是我有30分钟前输入的行? – 2012-03-31 08:22:48

1

您可以使用BETWEEN

SELECT * FROM users 
WHERE created_at BETWEEN '2012-03-31 00:00:00 UTC' AND '2012-03-31 23:59:59 UTC' 
1

我不能肯定,如果你正在寻找同一日历天之内检查,或者你在过去的24小时内说,所以这里就是我通常是两种情况做:

一)同一日历天:

CONVERT(VARCHAR(8), myTable.myDate, 112) = CONVERT(VARCHAR(8), GETDATE(), 112) 

b)对于日期为过去24小时(含)

DATEDIFF(hour, myTable.myDate, GETDATE()) <= 24 
1

简单的日期算术会做内,

SELECT * 
FROM `table1` 
WHERE `time_col` BETWEEN NOW() AND NOW()- INTERVAL 24 HOURS; 
0

既然你存储日期为Unix的时间戳,那么你需要UNIX_TIMESTAMP这样

SELECT 
    // fields you need 
FROM `table` 
WHERE 
    `date_field` BETWEEN UNIX_TIMESTAMP(DATE_SUB(NOW() INTERVAL 24 HOUR)) AND UNIX_TIMESTAMP() 

你可能要考虑存储MySQLs日期DATETIME格式因为它使MySQL中的日期计算更容易。

相关问题