2011-08-17 117 views
4

我需要MySQL写一个查询,其中它检索unix时间戳字段(“added_on”)超过6个月的所有行。MySQL查询UNIX时间戳字段

帮助?

在此先感谢!

回答

1
SELECT * FROM foobar WHERE added_on < UNIX_TIMESTAMP() - 15778463 

这不完全6个月,每年为它有点不同,但它应该是适用于各种用途(converted to seconds by Google

您也可以在UNIX时间戳转换为一个“真正的足够接近“时间戳,并在其上使用MySQL的日期/时间函数,这可能会比查询中硬编码的15778463整数更精确,看起来更漂亮(可以使用INTERVAL 6 months),但它也比使用纯文本更慢整数。

+1

为了允许使用索引,请执行'WHERE added_on Mchl

+0

已更新。我已经习惯了的Postgres,谁还能了解它,使用索引 – shesek

+0

THa'd解释为什么你认为与“普通整数”工作会比用普通的整数(又名“真正的时间戳”)工作慢得多 – Mchl

2
SELECT * FROM mytable WHERE added_on < (NOW() - (6 * 30 * 24 * 60 * 60)); 
5
SELECT * 
FROM yourtable 
WHERE added_on <= UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 6 MONTH)) 
2
select * from table 
where now() - interval 6 month > from_unixtime(added_on) 
+0

这只是我在找什么,谢谢! – dibs