elseif (p_period = 'LAST2CALENDARMONTHS') then
lMonthInt := 2;
lLastDay := date_trunc('month',current_date - interval '1 month') + INTERVAL '1 month - 1 day' + (interval '1 day - 1 second');
lFirstDay := date_trunc('month',current_date - (lMonthInt*INTERVAL '1 month'));
elseif (p_period = 'LAST3CALENDARMONTHS') then
lMonthInt := 3;
lLastDay := date_trunc('month',current_date - interval '1 month') + INTERVAL '1 month - 1 day'+ (interval '1 day - 1 second');
lFirstDay := date_trunc('month',current_date - (lMonthInt*INTERVAL '1 month'));
使用Postgresql,上面的代码将字符串转换为FromDate和Todate,例如当我调用 LAST2CALENDARMONTHS
时会显示 从日期: “2016-08-01 00:00:00” 至今: “2016-09-30 23:59:59”
我想在一年中的任何一个月都这样做,例如调用 JANUARY ,结果应为:
没有fromdate: “2016-01-01 00:00:00” 至今: “2016-01-31 23:59:59”
这样的事情可能吗?
答案 0 :(得分:2)
要获得当年1月份的第一天和最后一天:
elseif (p_period = 'JANUARY') then
lFirstDay := make_timestamp(date_part('year', current_date)::int, 1, 1, 0, 0, 0);
lLastDay := lFirstDay + interval '1 month' - interval '1 second';
对于PostgreSQL 9.3及更早版本,make_timestamp
不存在,您可以使用
SELECT date_trunc('year', current_timestamp) + '0 months'
获得1月的第一天。