如何 Select 在两个特定日期范围之间
How to Select Between Two Specific Date Ranges
假设我想要一个特定的时间间隔,例如 (mm/dd/yyyy-1 - 1/1/yyyy-1)
我如何在 postgres 中查询这个?
到目前为止,我已经解决了一些问题:
SELECT *
FROM my_table
WHERE date BETWEEN (now()::DATE - INTERVAL '1 year') - ‘1/1/?’ AND (now() - INTERVAL '1 year') - ‘1/1/?’
我不太清楚如何获得前一年。
我走在正确的轨道上吗?对不起,我是新来的。谢谢!
您可以使用 date_trunc()
获取年初:
select *
from my_table
where date >= date_trunc('year', current_date - interval '1 year')
and date < date_trunc('year', current_date)
date_trunc('year', current_date)
returns这年的第一天。由于我使用 <
作为上限,这将包括前一年 12 月 31 日之前的所有日期。
如果您确实想使用 BETWEEN
(只有当 date
定义为 date
数据类型时才能正常工作),那么您可以使用:
select *
from my_table
where date between date_trunc('year', current_date - interval '1 year')::date
and date_trunc('year', current_date)::date - 1
注意上限被投成date
然后我减去1天在12月31日登陆。这是必要的因为between
包括 两个值。
如果你愿意,你可以使用这样的东西:
select * from table
where data between to_date(concat('01/01/', EXTRACT (YEAR FROM now()) - 1), 'mm/dd/yyyy') and (now()::DATE - interval '1 year')
不过用的比较多的是date_trunc
:
select * from table
where date >= date_trunc('year', now()::DATE - interval '1 year')
and date < date_trunc('year', now()::DATE)
当您使用 date_trunc('year', now()::DATE)
时,日期将为 01,月份为 01,年份将为今年。
假设我想要一个特定的时间间隔,例如 (mm/dd/yyyy-1 - 1/1/yyyy-1)
我如何在 postgres 中查询这个?
到目前为止,我已经解决了一些问题:
SELECT *
FROM my_table
WHERE date BETWEEN (now()::DATE - INTERVAL '1 year') - ‘1/1/?’ AND (now() - INTERVAL '1 year') - ‘1/1/?’
我不太清楚如何获得前一年。
我走在正确的轨道上吗?对不起,我是新来的。谢谢!
您可以使用 date_trunc()
获取年初:
select *
from my_table
where date >= date_trunc('year', current_date - interval '1 year')
and date < date_trunc('year', current_date)
date_trunc('year', current_date)
returns这年的第一天。由于我使用 <
作为上限,这将包括前一年 12 月 31 日之前的所有日期。
如果您确实想使用 BETWEEN
(只有当 date
定义为 date
数据类型时才能正常工作),那么您可以使用:
select *
from my_table
where date between date_trunc('year', current_date - interval '1 year')::date
and date_trunc('year', current_date)::date - 1
注意上限被投成date
然后我减去1天在12月31日登陆。这是必要的因为between
包括 两个值。
如果你愿意,你可以使用这样的东西:
select * from table
where data between to_date(concat('01/01/', EXTRACT (YEAR FROM now()) - 1), 'mm/dd/yyyy') and (now()::DATE - interval '1 year')
不过用的比较多的是date_trunc
:
select * from table
where date >= date_trunc('year', now()::DATE - interval '1 year')
and date < date_trunc('year', now()::DATE)
当您使用 date_trunc('year', now()::DATE)
时,日期将为 01,月份为 01,年份将为今年。