SQL获取超过30天的所有记录

时间:2013-08-01 15:15:36

标签: sql postgresql

现在我发现了许多类似的SO问题,包括我的旧问题,但我想要做的是获得超过30天的任何记录,但我的表字段是unix_timestamp。所有其他示例似乎都使用DateTime字段或其他东西。尝试了一些,无法让他们工作。

这绝对不适用于下方。另外我不希望在日期之间有一个日期,我希望在30天后从存储在数据库中的unix时间戳记中获取所有记录。 我正在尝试修剪非活动用户。

简单示例..不起作用。

SELECT * from profiles WHERE last_login < UNIX_TIMESTAMP(NOW(), INTERVAL 30 DAY)  

试过这个

SELECT * from profiles WHERE UNIX_TIMESTAMP(last_login - INTERVAL 30 DAY) 

在复杂的日期查询中不太强大。任何帮助都很感激。

3 个答案:

答案 0 :(得分:66)

尝试类似:

SELECT * from profiles WHERE to_timestamp(last_login) < NOW() - INTERVAL '30 days' 

手册中的引用:

  

单参数to_timestamp函数也可用;它接受双精度参数,并从Unix纪元(自1970-01-01 00:00:00 + 00以来的秒数)转换为带时区的时间戳。 (整数Unix时期被隐式转换为双精度。)

答案 1 :(得分:24)

除非我错过了什么,否则这应该很简单:

SELECT * FROM profiles WHERE last_login < NOW() - INTERVAL '30 days';

答案 2 :(得分:3)

怎么样

SELECT * from profiles WHERE last_login < VALUEOFUNIXTIME30DAYSAGO

SELECT * from profiles WHERE last_login < (extract(epoch from now())-2592000)

看一下这篇文章:

https://dba.stackexchange.com/questions/2796/how-do-i-get-the-current-unix-timestamp-from-postgresql

和这个

http://www.epochconverter.com/