获取PostgreSQL一个月前的时间戳

时间:2013-10-27 06:10:21

标签: sql postgresql

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

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

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

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

3 个答案:

答案 0 :(得分:36)

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

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

让时间戳返回00:00:00并不重要,所以这符合我的意图。

答案 1 :(得分:35)

select date_trunc('day', NOW() - interval '1 month')

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

答案 2 :(得分:0)

当您需要查询上个月的数据时,则需要查询月份值为(current_month-1)的相应日期列。

SELECT * 
FROM {table_name}
WHERE {column_name} >= date_trunc('month', current_date-interval '1' month)
    AND {column_name} < date_trunc('month', current_date)

where子句的第一个条件将搜索比上个月的第一天(前一个月的第一天的00:00:00天)大的日期,第二个子句将搜索小于当前月的第一天的日期( 00:00:00本月的第1天)。 这将包括上月日期中的所有结果。