我查看了有关postgreSQL中time元素的帖子,但是到目前为止他们还没有点击过我。我希望得到Last Year to Date
,在这种情况下2016年1月1日至2016年3月20日和Last Year Month to Date
,在这种情况下,2016年1月3日至2016年3月3日。
Get last 12 months data from Db with year in Postgres
get last three month records from table
select actual_sale_date from allsalesdata
where actual_sale_date > date_trunc('year', current_date)
提供2017年年初至今
select actual_sale_date from allsalesdata
where actual_sale_date > date_trunc('month', current_date)
提供2017年的月度
select actual_sale_date from allsalesdata
where actual_sale_date >= date_trunc('year', now() - interval '1 year')
and actual_sale_date < date_trunc('year',now())
提供从01/01开始的去年----&gt; 12/31数据。
我可以在上面的代码段中添加哪些内容,这些代码段将为我提供去年至今和去年的月初数据。请提供帮助。
答案 0 :(得分:2)
这个怎么样?
select actual_sale_date
from allsalesdata
where actual_sale_date + interval '1' year >= date_trunc('year', current_date) and
actual_sale_date + interval '1' year < current_date
也就是说,在去年的日期添加一年,并与今年相比。我建议添加一年并使用此年份的日期。这更直观地处理闰年(在我看来)。
答案 1 :(得分:2)
您的公式很难遵循。您需要构造将actual_sale_date与一个日期和另一个日期相结合的查询。这样:
上一年的开始:
t=# select date_trunc('year', now() - interval '1 year');
date_trunc
------------------------
2016-01-01 00:00:00+00
(1 row)
当天开始:
t=# select date_trunc('day', now());
date_trunc
------------------------
2017-03-20 00:00:00+00
(1 row)
上一年当月的开始:
t=# select date_trunc('month', (now() - interval '1 year'));
date_trunc
------------------------
2016-03-01 00:00:00+00
(1 row)
因此,如果&#34;去年月初数据&#34;指从2016年3月第一个到现在:
select actual_sale_date from allsalesdata
where actual_sale_date >= date_trunc('month', (now() - interval '1 year'))
and actual_sale_date <= now()