nyc*_*dan 1 postgresql datetime
我有一个记录表,其中包含一个创建日期.我想返回过去6个日历月中的每一个的新记录,包括本月的部分记录.我对SQL Server了如指掌,但对PostgreSQL并不熟悉.
我已经能够使用此查询获取滚动月份的数据:
select
COUNT(ID) as Total,
COUNT(CASE WHEN createddate between (now() - '1 month'::interval)::timestamp AND now() THEN AG.ID END) as ThisMonth,
COUNT(CASE WHEN createddate between (now() - '2 month'::interval)::timestamp AND (now() - '1 month'::interval)::timestamp THEN AG.ID END) as LastMonth,
COUNT(CASE WHEN createddate between (now() - '3 month'::interval)::timestamp AND (now() - '2 month'::interval)::timestamp THEN AG.ID END) as PrevMonth,
COUNT(CASE WHEN createddate between (now() - '4 month'::interval)::timestamp AND (now() - '3 month'::interval)::timestamp THEN AG.ID END) as PrevMonth2,
COUNT(CASE WHEN createddate between (now() - '5 month'::interval)::timestamp AND (now() - '4 month'::interval)::timestamp THEN AG.ID END) as PrevMonth3,
COUNT(CASE WHEN createddate between (now() - '6 month'::interval)::timestamp AND (now() - '5 month'::interval)::timestamp THEN AG.ID END) as PrevMonth4
FROM a_group AG
Run Code Online (Sandbox Code Playgroud)
但是在6月21日,这将返回5/22-6/21,4/22-5/21等
数据.我希望数据如下:6/1-6/21(部分当前月份) ),5/1-5/31等
有什么建议?我也怀疑我可以在一个循环中做到这一点,但我还不熟悉语法.现在,我正在从PostgreSQL Maestro对备份文件进行测试.
谢谢.
我认为这个date_trunc功能可能是你的朋友(见postgres docs).我想你会做这样的事情:
select
COUNT(ID) as Total,
COUNT(CASE WHEN createddate between date_trunc('month', now()) AND now() THEN AG.ID END) as ThisMonth,
COUNT(CASE WHEN createddate between date_trunc('month', now()) - interval '1 month' AND date_trunc('month', now()) - interval '1 day' THEN AG.ID END) as LastMonth,
Run Code Online (Sandbox Code Playgroud)
等等...
| 归档时间: |
|
| 查看次数: |
2318 次 |
| 最近记录: |