Postgresql:来自字符串的时间戳

时间:2016-10-24 05:12:29

标签: postgresql function date

 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”

这样的事情可能吗?

1 个答案:

答案 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月的第一天。