天天看點

Psql 日期處理Psql 日期處理

Psql 日期處理

1.擷取最近n天的資料

//包括當天
where date_part('day',current_date - one_date)  >= 0 
and date_part('day',current_date - one_date) < n;
//不包括當天
where date_part('day',current_date - one_date)  > 0 
and date_part('day',current_date - one_date) <= n;
           

2.擷取最近n周的資料(周一為一周之始)

//包括當周
where date_part('day',(date_trunc('week',current_date) + '1 week - 1 day'::interval)::date - one_date) >= 0 
and date_part('day',(date_trunc('week',current_date) + '1 week - 1 day'::interval)::date - one_date) < n*7;
//不包括當周
where date_part('day',(date_trunc('week',current_date) + '1 week - 1 day'::interval)::date - one_date) >= 7 
and date_part('day',(date_trunc('week',current_date) + '1 week - 1 day'::interval)::date - one_date) < (n+1)*7;
           

3.擷取最近n月的資料

//包括當月
where date_part('year',age(current_date,one_date))*12 + date_part('month',age((date_trunc('month',current_date) + '1 month - 1 day'::interval)::date,one_date)) >= 0 
and date_part('year',age(current_date,one_date))*12 + date_part('month',age((date_trunc('month',current_date) + '1 month - 1 day'::interval)::date,one_date)) < n;
//不包括當月
where date_part('year',age(current_date,one_date))*12 + date_part('month',age((date_trunc('month',current_date) + '1 month - 1 day'::interval)::date,one_date)) > 0 
and date_part('year',age(current_date,one_date))*12 + date_part('month',age((date_trunc('month',current_date) + '1 month - 1 day'::interval)::date,one_date)) <= n;
           

4.擷取最近n年的資料

//包括當年
where date_part('year',age((date_trunc('year',current) + '1 year - 1 day'::interval)::date,one_date)) >= 0 
and date_part('year',age((date_trunc('year',current) + '1 year - 1 day'::interval)::date,one_date)) < n;
//不包括當年
where date_part('year',age((date_trunc('year',current) + '1 year - 1 day'::interval)::date,one_date)) > 0 
and date_part('year',age((date_trunc('year',current) + '1 year - 1 day'::interval)::date,one_date)) <= n;
           

current_date 擷取目前日期年月日

one_date 你想要計算的日期

date_part() 方法 擷取日期中的年月日時分秒等

age() 方法 比較兩個時間日期之間的差,結果為年月日

date_trunc() 方法 截取時間戳

參考資料