PostgreSQL date_trunc() 截断日期函数,完成定时时间语法.

摘要:Oracle有大量的日期函数可供使用,trunc, new_time,months_between,next_day,last_day,add_months,round等函数.当然PostgreSQl 也有大量的时间函数,详情请移步postgresql时间日期函数总结. 所以在此只说明Postgresql 中的TRUNC取断函数.

  1.首先介绍一下Oracle的trunc函数:

 select trunc(sysdate) from dual    //返回当前日期  sysdate: 系统时间
select trunc(sysdate,'year') from dual;   //返回本年的第一天
select trunc(sysdate,'month') from dual;   //返回本月的第一天
select trunc(sysdate,'q') from dual;       //返回本季度的第一天
select to_char(trunc(sysdate),'yyyy-mm-dd hh24:mi:ss') from dual;  //获取当天的零时零分零秒
select trunc(sysdate,'mi') from dual;         //获取当前分

2. 接下来 介绍 Postgresql 的trunc函数.

  截断数字类型函数trunc为数字截断函数.移步postgresql: trunc函数.

  截断日期类型函数date_trunc(text,time/timestamp/timestamptz);

3.date_trunc() 函数.

select date_trunc('month',now()) +interval '12 h';		
//每月1号 12点		
		
select date_trunc('month',now()) + interval '15 d 9 h 30 min';		
//每月15号9点半		
		
		
select date_trunc('day',now()) + interval '9 h';		
//每天9点		
		
		
		
select date_trunc('day',now()) + interval '7 d';		
//每周的今天		
select date_trunc('weak',now())  + interval '1d 1minute';		
//每周的周二第一分钟		
		
select date_trunc('h',now()) + interval '30 minute';		
//每小时		
		
		
		
select date_trunc('minute',now()) + interval '30 second';		
//每分钟		
select date_trunc('minute',now()) + interval '30 minute 30 second';		
//每30分钟 		
		
		
select date_trunc('quarter',now()) + interval '15 d 15 h 15 minute 30 second';		
//本季度的第15天,15小时 15分 30秒		
select date_trunc('quarter',now() ) - interval '1 h';		
//每个季度最后一天的晚上11点		
select date_trunc('quarter',now() + interval '3 month') - interval '1 h';		
//每个季度的最后一天的晚上的11点(从下个季度开始算起).		

  补充:

me=# select date_trunc('day',date '2018-05-15 09:00:00+08') + interval '9 h';
        ?column?        
------------------------
 2018-05-15 09:00:00+08
(1 行记录)

me=# select date_trunc('day',date '2018-05-15 14:09:04.127444+08') + interval '9 h';
        ?column?        
------------------------
 2018-05-15 09:00:00+08
(1 行记录)

me=# select date_trunc('day',date '2018-05-14 14:09:04.127444+08') + interval '9 h';
        ?column?        
------------------------
 2018-05-14 09:00:00+08
(1 行记录)

me=# select date_trunc('day',time '2018-05-14 14:09:04.127444+08') + interval '9 h';
 ?column? 
----------
 09:00:00
(1 行记录)

me=# select date_trunc('day',timestamp '2018-05-14 14:09:04.127444+08') + interval '9 h';
      ?column?       
---------------------
 2018-05-14 09:00:00
(1 行记录)

me=# select date_trunc('day',timestamptz '2018-05-14 14:09:04.127444+08') + interval '9 h';
        ?column?        
------------------------
 2018-05-14 09:00:00+08
(1 行记录)

me=# select date_trunc('day',timestamptz '2018-05-14 14:09:04.127444+08'+ interval '9 h');
       date_trunc       
------------------------
 2018-05-14 00:00:00+08
(1 行记录)




  • 23
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值