[英]Postgresql: Timestamp from string
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进行调用,结果应为:
从:“ 2016-01-01 00:00:00”到:“ 2016-01-31 23:59:59”
这样的事情可能吗?
要获取当年一月的第一天和最后一天,请使用:
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';
对于不存在make_timestamp
PostgreSQL 9.3和更早版本,可以使用
SELECT date_trunc('year', current_timestamp) + '0 months'
得到一月的第一天。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.