Sql 检索前几个月的数据

Sql 检索前几个月的数据,sql,postgresql,Sql,Postgresql,我正在自动化一些报告,我试图自动化一个特定的月度报告时遇到了一些麻烦。日期/时间存储在历元值中 以下查询: SELECT Column1,Column2,Column3,Column4 FROM Table1,Table2 WHERE summarydate >= extract(epoch from to_timestamp('01 oct 2016', 'DD Mon YYYY'))::bigint and summaydate < extract

我正在自动化一些报告,我试图自动化一个特定的月度报告时遇到了一些麻烦。日期/时间存储在历元值中

以下查询:

SELECT
    Column1,Column2,Column3,Column4
FROM
    Table1,Table2
WHERE
    summarydate >= extract(epoch from to_timestamp('01 oct 2016', 'DD Mon YYYY'))::bigint and
    summaydate < extract(epoch from to_timestamp('01 nov 2016', 'DD Mon YYYY'))::bigint and
GROUP BY 1,2
ORDER BY 1,2
选择
第1栏、第2栏、第3栏、第4栏
从…起
表一、表二
哪里
summarydate>=摘录(从到的历元时间戳('2016年10月1日,'DD-Mon-YYYY')::bigint和
summaydate<摘录(从到的历元时间戳('2016年11月1日,'DD-Mon-YYYY')::bigint和
按1,2分组
以1,2的顺序排列
当前,在调整日期范围后手动运行查询

考虑到epoch的摘录,是否可以将日期自动更改为上个月

目标是将带有此查询的自动报告设置为在前几个月数据的每个月的第一天运行

在与“获取上月数据”相关的其他问题中,我找不到Postgres的解决方案。

尝试使用
DATE\u TRUNC(“month”,DATE)
,它将输出本月的第一天:

SELECT
    Column1,Column2,Column3,Column4
FROM
    Table1,Table2
WHERE
    summarydate >= extract(epoch from date_trunc('month', current_date) - interval '1 month')::bigint and
    summaydate < extract(epoch from date_trunc('month', current_date))::bigint and
GROUP BY 1,2
ORDER BY 1,2
选择
第1栏、第2栏、第3栏、第4栏
从…起
表一、表二
哪里
summarydate>=提取(从日期开始的历元(“月”,当前日期)-间隔“1个月”)::bigint和
summaydate<摘录(从日期算起的历元('month',current_date))::bigint和
按1,2分组
以1,2的顺序排列

我知道这可能只是一个例子,但是如果
SELECT
上的非聚合字段不在
groupby
section@JuanCarlosOropeza更正这只是一个例子,真正的select语句在查询中起作用,不过我很欣赏这个技巧,我仍然是一个新手:)即使是一个例子,你应该尽你所能去尝试,否则我们会因为不相关的错误而浪费时间。明白了,为以后的问题将链接的页面添加书签。非常感谢。非常感谢@sagi我不认为你可以用interval,一种记忆库的东西!没问题,伙计@Dante