您需要删除它,concat()因为它会将 timstamp 转换为 varchar。
如果您想获得“时间戳”值的月初,有更简单的方法可以做到这一点:
date_trunc('month', '{{ date.start }}'::timestamp)
结果是一个时间戳,您可以从中减去间隔:
date_trunc('month', '{{ date.start }}'::timestamp) - interval '1 month'
以下示例查询:
with sample_data (input_date) as (
values
(timestamp '2019-01-01 17:18:19'),
(timestamp '2019-02-07 16:30:40'),
(timestamp '2019-03-02 23:30:42')
)
select input_date,
(date_trunc('month', input_date) - interval '1 month')::date as previous_month_start
from sample_data;
返回以下结果:
input_date | previous_month_start
--------------------+---------------------
2019-01-01 17:18:19 | 2018-12-01
2019-02-07 16:30:40 | 2019-01-01
2019-03-02 23:30:42 | 2019-02-01
如果您想以不同的格式显示结果,请应用to_char()结果:
to_char(date_trunc('month', input_date) - interval '1 month', 'mm/yyyy')
在线示例