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

Pan*_*ack 46 sql postgresql

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

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

简单的例子..不起作用.

SELECT * from profiles WHERE last_login < UNIX_TIMESTAMP(NOW(), INTERVAL 30 DAY)  
Run Code Online (Sandbox Code Playgroud)

并试过这个

SELECT * from profiles WHERE UNIX_TIMESTAMP(last_login - INTERVAL 30 DAY) 
Run Code Online (Sandbox Code Playgroud)

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

即使问题被接受了.我不喜欢触发快乐的人将问题视为重复.它绝对不是重复的,因为我没有问到mysql函数的替代方案是什么.我确切地询问了如何获取超过30天的记录,并且重复的问题没有回答,甚至告诉我如何获得它.我认为人们需要阅读这些问题.

Igo*_*nko 76

尝试类似的东西:

SELECT * from profiles WHERE to_timestamp(last_login) < NOW() - INTERVAL '30 days' 
Run Code Online (Sandbox Code Playgroud)

从手册中引用:

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

  • `to_timestamp()` 函数从 PostgreSQL 9.6+ 开始可用。 (2认同)

Jan*_*rny 29

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

SELECT * FROM profiles WHERE last_login < NOW() - INTERVAL '30 days';
Run Code Online (Sandbox Code Playgroud)

  • @Pjack:啊,所以我确实错过了什么.`last_login`列的类型是什么?我认为它是`TIMESTAMP`,显然不是. (3认同)