假設我想要一個特定的間隔,如 (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/?’
我不太確定如何獲得前一年。
我在正確的軌道上嗎?對不起,我是新手。謝謝!
uj5u.com熱心網友回復:
您可以使用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)回傳的第一天,這一年。正如我所使用<的上限,這將包括上一年 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
請注意,上限被轉換為 a date,然后我減去 1 天以在 12 月 31 日登陸。這是必要的,因為between 包括兩個值。
uj5u.com熱心網友回復:
如果你愿意,你可以使用這樣的東西:
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,而年份將是今年。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/345903.html
標籤:sql PostgreSQL 日期 之间
上一篇:我可以用Java中的時區實體化一個新的日期嗎?[復制]
下一篇:R:按日期將行插入資料框中
