首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PostgreSQL中选择上个月的范围

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

Stack Overflow用户
提问于 2022-03-09 10:26:11
回答 1查看 38关注 0票数 0

我需要写这样的代码

代码语言:javascript
复制
BETWEEN '2022-02-01' AND '2022-02-28' 

但我是相对的,上个月选择了

我试过这个方法

代码语言:javascript
复制
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

但我认为可能会有更好的解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-09 10:31:30

不要将日期值转换为字符串进行比较。始终使用“实际”日期值。

要获得上个月的开始,您可以使用date_trunc()的组合并减去一个间隔

最后一个月的开始是“这个月”的开始,减去一个月:

代码语言:javascript
复制
date_trunc('month', current_date) - interval '1 month'

最后一个月底是这个月的开始减去一天:

代码语言:javascript
复制
date_trunc('month', current_date) - interval '1 day'

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

代码语言:javascript
复制
where the_column >= date_trunc('month', current_date) - interval '1 month'
  and the_column  < date_trunc('month', current_date) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71407828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档