繁体   English   中英

PostgreSQL:来自字符串的时间戳

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM