是否可以转换例如字符串“ 201701”在PostgreSQL中的日期为“ 2017-01-01”和“ 2017-01-31”?
因此:
"201701" get '2017-01-01' and '2017-01-31'
"201702" get '2017-02-01' and '2017-02-28'
"201703" get '2017-03-01' and '2017-02-31'
等
答案 0 :(得分:4)
您可以使用TO_DATE
函数,并使用字符串串联来附加day组件,如下所示:
SELECT
TO_DATE('201702' || '01', 'YYYYMMDD') AS first,
(TO_DATE('201702' || '01', 'YYYYMMDD') + INTERVAL '1 month') -
INTERVAL '1 day' AS last;
上面的技巧只是将01
添加到本月的第一天。对于同月的最后一天,它会在第一个月的第一天加上一个月,以获取下个月的第一个月,然后回滚一天以获取当月的最后一天。 >
答案 1 :(得分:0)
Tim Biegeleisen的上述回答有效,但这是另一种选择。
to_date()
函数将字符串文字转换为日期值。
示例用法是:to_date(text,format);
SELECT to_date('201701','YYYYMMDD');
(已编辑)
您还可以使用date_trunc,它是PostgreSQL的一部分。与上面的操作相同。
select date_trunc('month', current_date) , date_trunc('month', CURRENT_DATE) + interval '1 month - 1 day';