获取PostgreSQL一个月前的时间戳

Dr.*_*Kay 28 sql postgresql

我有一个PostgreSQL数据库,其中一个表快速增长(每个月左右几百万行),所以我想定期将该表的内容存档到一个单独的表中.

我打算使用cron作业每晚执行一个.sql文件,将所有超过一个月的行存档到另一个表中.

我的查询工作正常,但我需要知道如何动态创建一个月前的时间戳.

time列以格式存储,2013-10-27 06:53:12我需要知道在SQL查询中使用什么来构建恰好一个月前的时间戳.例如,如果今天是2013年10月27日,我希望查询匹配时间<的所有行2013-09-27 00:00:00

Dr.*_*Kay 49

问题由IRC的一位朋友回答:

'now'::timestamp - '1 month'::interval

时间戳返回00:00:00并不重要,所以这对我的意图有用.

  • +1这个也适用于Redshift (5认同)

ale*_*ius 40

select date_trunc('day', NOW() - interval '1 month')
Run Code Online (Sandbox Code Playgroud)

此查询将在一个月前从现在开始返回日期,并将圆周时间返回到00:00:00.

  • 请注意,这将返回实际的时间戳; 从问题的措辞来看,实际的列有一个字符串,所以你需要将它转换为比较:`WHERE CAST("time"as timestamp)<date_trunc('day',now() - interval'1 month' )` (2认同)