首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PostgreSQL确定上个月的最后一天?

如何使用PostgreSQL确定上个月的最后一天?
EN

Stack Overflow用户
提问于 2012-01-21 00:35:12
回答 6查看 21.9K关注 0票数 12

我需要查询一个PostgreSQL数据库,以确定今天的日期和上个月的最后一天之间的记录。换句话说,我想检索从2011年12月31日到今天的所有数据。此查询将在每个月重复使用,因此下个月将基于当前日期和2012年1月31日进行查询。

我见过this option,但我更希望避免使用函数(如果可能的话)。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-21 01:17:41

这两个解决方案都包括上个月的最后一天,也包括“今天”。

对于date列:

代码语言:javascript
运行
复制
SELECT *
FROM   tbl
WHERE  my_date BETWEEN date_trunc('month', now())::date - 1
               AND     now()::date

您可以从date (但不是从timestamp)中减去普通整数值来减去days。这是最简单、最快的方法。

对于timestamp列:

代码语言:javascript
运行
复制
SELECT *
FROM   tbl
WHERE  my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND    my_timestamp <  date_trunc('day'  , now()) + interval '1 day'

请注意,我对第二个条件使用了<运算符,以获得精确的结果(~“明天之前”)。

在第二个查询中,我没有强制转换为date。相反,我添加了一个interval '1 day',以避免来回转换。

请看一下手册中的date / time typesfunctions

票数 20
EN

Stack Overflow用户

发布于 2012-12-05 20:51:15

获取上个月/上个月的日期

代码语言:javascript
运行
复制
SELECT (date_trunc('month', now())::date - 1) as last_month_date

结果: 2012-11-30

获取上个月/上个月的number of days

代码语言:javascript
运行
复制
SELECT DATE_PART('days', date_trunc('month', now())::date - 1) last_month_days

结果: 30

票数 6
EN

Stack Overflow用户

发布于 2012-01-21 00:40:12

试试这个:

代码语言:javascript
运行
复制
SELECT ...
WHERE  date_field between (date_trunc('MONTH', now()) - INTERVAL '1 day')::date 
                      and now()::date 
       ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8944721

复制
相关文章

相似问题

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