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=# 


相关内容

热门资讯

19岁丹麦公主开始服军役,不要... 据参考消息援引英国《独立报》等媒体当地时间3日报道,丹麦公主伊莎贝拉已抵达斯劳厄尔瑟一处军事营地,开...
打印机墨盒怎么加墨?大佬求解 打印机墨盒里面的墨它是有限的,一般用完之后需要再次的添加才可以继续使用打印,这种墨盒我们自己添加墨可...
惠普1010打印机驱动怎么安装... 1、给电脑充电,打开电脑找到电脑的浏览器,输入打印机的官方网站,到打印机官方网站上搜索本打印机型号,...
iphone手机访问限制功能在... 很多小伙伴还不知道iphone手机访问限制功能在哪里设置?下面小编给大家介绍一下iphone手机设置...
win10共享打印机拒绝访问怎... 有些办公人员在使用打印机共享的时候,发现系统提示:共享打印机拒绝访问。那么win10共享打印机拒绝访...
南三环中路周边电工 南三环中路位于北京市丰台区,如果你想在周边寻找电工,可以通过以下几种方式:1. 在线平台:使用互联网...
对待“叛徒”,中日韩三国网民达... 执笔/羽中刀放弃国籍,真的能“撤回”吗?一名拥有95万粉丝、长期躲在日本骂韩国和中国的韩国博主,这两...
美国罕见缩减全球外交规模,涉日... 据凤凰卫视援引外媒8月4日报道,美国国务院已通知国会,计划关闭5个驻外使团。报道称,这是美国罕见地缩...
强震后遇“烤验”,日本熊本出现... 据凤凰卫视报道,一周前发生7.1级地震的日本熊本县,救灾仍在进行当中,现又遭遇酷热威胁,县府所在地熊...
红十字国际委员会代表与昂山素季... 昂山素季3日罕见公开露面。缅甸总统办公室表示,红十字国际委员会代表探视了昂山素季,并与她私下交谈。联...