现在我发现了许多类似的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)
在复杂的日期查询中不太强大。任何帮助都很感激。
答案 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
和这个