PostgreSQL 给定日期间隔初始时间计算
admin
2023-05-22 02:42:28
0

1.功能说明:

date_trunc: 截取给定时间(TIMESTAMP,date),获得指定精度(时,天,月,年)的初始使时间


2.一般时间

date_trunc('hour',TIMESTAMP '2018-08-16 20:38:40')

Result: 2018-08-16 20:00:00

date_trunc('day',TIMESTAMP '2018-08-16 20:38:40')

Result: 2018-08-16 00:00:00

date_trunc('month',TIMESTAMP '2018-08-16 20:38:40')

Result: 2018-08-01 00:00:00

date_trunc('year',TIMESTAMP '2018-08-16 20:38:40')

Result: 2018-01-01 00:00:00


3.特殊需求:

给定时间段的每年的所有月份的第一天,最后一天,下月第一天

-- Result: month_first_day, month_end_day, next_month

select date(zz) as month_first_day, date(zz + interval '1 month' - interval '1 day') as month_end_day, date(zz + interval '1 month') as next_month 

from generate_series(date_trunc('year',to_date('20180510','yyyymmdd')),date_trunc('year',to_date('201905','yyyymmdd')),'1 month') as tt(zz);


SQL结果:

 month_first_day | month_end_day | next_month 

-----------------+---------------+------------

 2018-01-01      | 2018-01-31    | 2018-02-01

 2018-02-01      | 2018-02-28    | 2018-03-01

 2018-03-01      | 2018-03-31    | 2018-04-01

 2018-04-01      | 2018-04-30    | 2018-05-01

 2018-05-01      | 2018-05-31    | 2018-06-01

 2018-06-01      | 2018-06-30    | 2018-07-01

 2018-07-01      | 2018-07-31    | 2018-08-01

 2018-08-01      | 2018-08-31    | 2018-09-01

 2018-09-01      | 2018-09-30    | 2018-10-01

 2018-10-01      | 2018-10-31    | 2018-11-01

 2018-11-01      | 2018-11-30    | 2018-12-01

 2018-12-01      | 2018-12-31    | 2019-01-01

 2019-01-01      | 2019-01-31    | 2019-02-01

(13 rows)



找出指定时间小时,天,月,年的初始值


-- Result: dtrunc_hour, dtrunc_day, dtrunc_month, dtrunc_year

SELECT date_trunc('hour', TIMESTAMP '2018-08-16 20:38:40') as dtrunc_hour ,date_trunc('day', TIMESTAMP '2018-08-16 20:38:40') as dtrunc_day,date_trunc('month', TIMESTAMP '2018-08-16 20:38:40') as dtrunc_month,date_trunc('year', TIMESTAMP '2018-08-16 20:38:40') as dtrunc_year;


SQL结果:


     dtrunc_hour     |     dtrunc_day      |    dtrunc_month     |     dtrunc_year     

---------------------+---------------------+---------------------+---------------------

 2018-08-16 20:00:00 | 2018-08-16 00:00:00 | 2018-08-01 00:00:00 | 2018-01-01 00:00:00

(1 row)


postgres=# 


相关内容

热门资讯

伊朗称有权对霍尔木兹海峡海底光... 伊朗伊斯兰革命卫队18日在社交媒体发布消息称,在伊方对霍尔木兹海峡“实施管理”后,“可宣布所有经过该...
广西柳州市启动洪水防御四级应急... 5月17日以来,广西柳州市柳南区已发生多次地震。据柳州市气象部门预报,5月14日以来,柳州市部分地区...
沙特消息称伊朗提出有条件地将浓... 据沙特方面当地时间18日消息,伊朗旨在结束中东冲突的最新修订方案包括有条件地将浓缩铀转移到俄罗斯,而...
广西再发生5.2级地震,凤凰记... 5月18日晚,广西柳州再度发生5.2级地震。凤凰卫视记者朱家杰深入震中上步村,摄像机全程记录下采访当...
黑龙江省高校科研成果“三进三促... 中新网黑龙江新闻5月17日电(张媛媛)近日,黑龙江省高校科研成果“三进三促”专项行动——哈尔滨理工大...
GreyOrange推出AI仓... GreyOrange近日发布了一款全新的仓储模拟平台,旨在帮助运营商在实施现场变更之前,对自动化部署...
中科院高能物理研究所所长曹俊:... 5月18日,在清华大学举行的2026国际基础科学大会(ICBS 2026)新闻发布会上,中国科学院高...
新闻发布会刚结束,柳州再发地震... 中国地震台网正式测定:05月18日21时44分在广西柳州市柳南区(北纬24.37度,东经109.26...
菲律宾副总统莎拉弹劾审理程序启... 据凤凰卫视报道,菲律宾参议院5月18日下午正式组成弹劾法庭,启动对莎拉·杜特尔特的弹劾审理程序,全体...
洁丽雅报警,“私生子传闻造成严... 5月18日晚间,洁丽雅官方微博发布严正声明。声明提到,近日,网络上出现关于洁丽雅家居股份有限公司、董...