Huu*_*uze 9 sql postgresql datetime
我需要查询PostgreSQL数据库以确定属于今天日期和上个月最后一天的记录.换句话说,我想检索2011年12月31日到今天之间的所有内容.此查询将每月重复使用,因此下个月,查询将基于当前日期和2012年1月31日.
我见过这个选项,但我更愿意避免使用函数(如果可能的话).
Erw*_*ter 16
这两种解决方案都包括上个月的最后一天,并且还包括所有"今天".
date
列:SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
Run Code Online (Sandbox Code Playgroud)
您可以从a date
(但不是从a timestamp
)中减去普通整数值以减去天数.这是最简单,最快捷的方式.
timestamp
列:SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Run Code Online (Sandbox Code Playgroud)
请注意,我使用<
运算符作为第二个条件来获得精确的结果(〜"明天之前").
我没有date
在第二个查询中强制转换.相反,我添加一个interval '1 day'
,以避免来回转换.
获取上个月/上个月的日期:
SELECT (date_trunc('month', now())::date - 1) as last_month_date
Run Code Online (Sandbox Code Playgroud)
结果:2012-11-30
获取上个月/上个月的天数:
SELECT DATE_PART('days', date_trunc('month', now())::date - 1) last_month_days
Run Code Online (Sandbox Code Playgroud)
结果:30