首页 > 解决方案 > PostgreSQL 将月份字符串转换为月份的开始和结束日期

问题描述

是否可以在 PostgreSQL 中将字符串“201701”转换为日期“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'

ETC

标签: sqlpostgresql

解决方案


您可以使用该TO_DATE函数,并使用字符串连接附加日期组件,如下所示:

SELECT
    TO_DATE('201702' || '01', 'YYYYMMDD') AS first,
    (TO_DATE('201702' || '01', 'YYYYMMDD') + INTERVAL '1 month') -
        INTERVAL '1 day' AS last;

上面的技巧只是添加01到本月的第一天。对于同月的最后一天,它首先在第一天加一个月,得到下个月的第一天,然后回滚一天,得到当月的最后一天。

在此处输入图像描述

演示


推荐阅读