如何在PostgreSQL中选择上个月的范围



我需要编写这种代码

BETWEEN '2022-02-01' AND '2022-02-28' 

但相对而言,选择上个月的

我试过这种方式

BETWEEN TO_CHAR(current_date - interval '1' month, 'yyyy-mm-01')::date
AND TO_CHAR(TO_CHAR(current_date, 'yyyy-mm-01')::date - interval '1' day, 'yyyy-mm-dd')::date

但我认为可能有更好的解决方案。

不要将日期值转换为字符串进行比较。始终使用";真实的";日期值。

要获得上个月的开始,可以使用date_trunc()和减去区间的组合

上个月的开始是";本月";减去一个月:

date_trunc('month', current_date) - interval '1 month'

上个月底是本月初减去一天:

date_trunc('month', current_date) - interval '1 day'

您没有告诉我们您的列要比较的数据类型,但通常最好使用>=<,而不是between-,特别是如果该列是timestamp

where the_column >= date_trunc('month', current_date) - interval '1 month'
and the_column  < date_trunc('month', current_date) 

相关内容

  • 没有找到相关文章

最新更新