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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM