2012-07-22 142 views
3

我想从一个MySQL数据库中,我的时间戳是UNIX格式的表中获取数据越来越记录

上来一些可测量类,但还是没有后使用下面的查询能够得到结果显示空行。任何人都可以帮助

SELECT * 
FROM bs_items 
WHERE owner_id='3' 
AND timestamp > (now() - interval 30 minute) 

它应该工作不知道问题出在哪里。

TABLE: bs_items 
================================================== 
| log_id | owner_id | item_code | timestamp | 
================================================== 
| 1  | 10   | 100   | 12345  | 
-------------------------------------------------- 
| 2  | 12   | 200   | 23456  | 
-------------------------------------------------- 

回答

2

这已经有一段时间,但我认为这可能是正确的:

SELECT * FROM bs_items WHERE 
datetime_column < DATE_SUB(NOW(), INTERVAL 30 MINUTE) 

您也可以通过选择和地点内能够有选择这样做,使日期时间比较查询为小于。 因此,在猜测中选择 '2012-07-22 13点50分14秒' +间隔30 MINUTE

: SELECT * FROM表WHERE datetimecol <(选择 '2012-07-22 13点50分14秒' +间隔30分钟),

尝试运行查询,看看有什么结果增加30分钟,看看导致调试:

select '2012-07-22 13:50:14' + INTERVAL 30 MINUTE 
+0

没有朋友的给我所有的记录和timstamp是UNIX格式 – 2012-07-22 12:56:50

+0

另一个想法......我想FROM_UNIXTIME()的作品..在unix time + interval 30 minture上查询查看结果。 类似于select FROM_UNIXTIME('value from db')+ INTERVAL 30 MINUTE – Darcey 2012-07-22 13:09:20

+0

@Darcey几乎正确,因为DATE_SUB函数返回NOW()减去30分钟前,所以<应该是a>,因此要查看来自最近30 datetime_column中的分钟数将选择大于30分钟前的数据。如果您在测试时未发现差异,只需提及其他人即将通过此解决方案。 – 2017-07-25 08:21:06

1

它试图足够长的时间,我发现我完美的解决方案后,似乎

$sql=mysql_query("SELECT * FROM bs_items WHERE 
    owner_id='$loguser' AND timestamp > (UNIX_TIMESTAMP() -600) 
    order by timestamp desc"); 

它似乎给结果我想,分享它可能会帮助别人..