设为首页 加入收藏

TOP

PostgreSQL 给定日期间隔初始时间计算
2017-07-14 10:22:59 】 浏览:1167
Tags:PostgreSQL 日期 间隔 初始 时间 计算

PostgreSQL 给定日期间隔初始时间计算


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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 11gR2 用户重命名(rename .. 下一篇Oracle实例关闭时修改spfile的参数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目