如何从表中获取最近3个月的记录。
SELECT * from table where month > CURRENT_DATE-120 and month < CURRENT_DATE order by month;
我已经使用了上面的查询是正确的吗?我应该使用这个从表中获得过去3个月的记录。
jljoyd4f1#
可以使用内置的INTERVAL指令检查其工作原理:
INTERVAL
SELECT CURRENT_DATE - INTERVAL '3 months'
您可以将SQL重写为:
SELECT * from table where date > CURRENT_DATE - INTERVAL '3 months'
(not但这应该会给予您了解如何使用INTERVAL指令)
czfnxgou2#
试试看:
SELECT * FROM table WHERE month BETWEEN EXTRACT(MONTH FROM NOW() - INTERVAL '3 months') AND EXTRACT(MONTH FROM NOW()) ORDER BY month ;
gab6jxml3#
select date::date from generate_series((当前日期-间隔'1个月')::date,(当前日期-间隔'1天')::date,'1天'::间隔)date WHERE日期〉= date_trunc('月',当前日期-间隔'3'个月)and date〈date_trunc('月',当前日期)这将给予过去三个月的日期列表,不包括当前月份的日期。例如,当前月份是11月。此列表将使用8月、9月和10月的所有日期。
vawmfj5a4#
这将过滤过去3个日历月
SELECT * from table where date >= to_char(CURRENT_DATE - INTERVAL '3 months', 'YYYY-MM-01')::date
4条答案
按热度按时间jljoyd4f1#
可以使用内置的
INTERVAL
指令检查其工作原理:
您可以将SQL重写为:
(not但这应该会给予您了解如何使用INTERVAL指令)
czfnxgou2#
试试看:
gab6jxml3#
select date::date from generate_series((当前日期-间隔'1个月')::date,(当前日期-间隔'1天')::date,'1天'::间隔)date WHERE日期〉= date_trunc('月',当前日期-间隔'3'个月)and date〈date_trunc('月',当前日期)
这将给予过去三个月的日期列表,不包括当前月份的日期。例如,当前月份是11月。此列表将使用8月、9月和10月的所有日期。
vawmfj5a4#
这将过滤过去3个日历月