Oracle:trunc()函数简介

  • 格式:pdf
  • 大小:49.60 KB
  • 文档页数:1

Oracle:trunc()函数简介

⼀:功能描述

⽤于截取时间或者数值,返回指定的值。

⼆:语法

(1)⽇期处理:

TRUNC(date,[fmt])

date 为必要参数,是输⼊的⼀个date⽇期值

fmt 参数可忽略,是⽇期格式,缺省时表⽰指定⽇期的0点。

(2)数值处理:

TRUNC(number,[decimals])

number 为必要参数,是输⼊的⼀个number数值

decimals 参数可忽略,是要截取的位数,缺省时表⽰截掉⼩数点后边的值。

三:栗⼦

(1)处理⽇期:

--sysdate和trunc(sysdate)是不⼀样的 sysdate在当天的零时零分零秒等于trunc(sysdate)

select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),

to_char(trunc(sysdate), 'yyyy-mm-dd hh24:mi:ss')

from dual t;

--年

select trunc(sysdate, 'yy') "当年第⼀天" from dual;

select trunc(sysdate, 'yyyy') "当年第⼀天" from dual;

select trunc(sysdate, 'year') "当年第⼀天" from dual;

--季度

select trunc(sysdate, 'q') "当前季度的第⼀天" from dual;

select trunc(add_months(sysdate,3), 'Q') -1/24 "这个季度最后⼀天23点" from dual;

--⽉

select trunc(sysdate, 'mm') "当⽉第⼀天" from dual;

select trunc(sysdate, 'month') "当⽉第⼀天" from dual;

select trunc(last_day(sysdate)+1) "下个⽉第⼀天的0点" from dual;

--周

select trunc(sysdate, 'd') "本周的第⼀天,周⽇起" from dual;

select trunc(sysdate,'day') "本周的第⼀天,周⽇起" from dual;

select next_day(TRUNC(SYSDATE ), 'TUESDAY' ) + 12/24 "下个星期⼆中午12点" from dual;

select TRUNC(LEAST(NEXT_DAY(SYSDATE, 'SATURDAY'), NEXT_DAY(SYSDATE, 'SUNDAY'))) + (6*60+10)/(24*60) "下个周六⽇早上6点10分" from dual;

--天

select trunc(sysdate+1) "今晚12点" from dual;

select trunc(sysdate+1) + (8*60+30)/(24*60) "明天早上8点30分" from dual;

--时

select trunc(sysdate, 'hh')"当前⼩时" from dual;

select trunc(sysdate, 'hh24') "当前⼩时" from dual;

--分

select trunc(sysdate, 'mi') "当前分钟" from dual;

select trunc(sysdate,'mi') + 10/ (24*60) "10分钟后的时间"from dual;

--秒

select sysdate + 10/(24 * 60 * 60) "10秒钟后" from dual;--trunc没有精确到秒的精度

(2)处理数值:

--123.56,将⼩数点右边指定位数后⾯的截去;

select trunc(123.567,2) from dual;

--100,第⼆个参数可以为负数,表⽰将⼩数点左边指定位数后⾯的部分截去,即均以0记;

select trunc(123.567,-2) from dual;

--123,默认截去⼩数点后⾯的部分;

select trunc(123.567) from dual;