日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle trunc年,使用Oracle trunc 来指定精确的年月日时分秒

發(fā)布時(shí)間:2024/1/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle trunc年,使用Oracle trunc 来指定精确的年月日时分秒 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

函數(shù)trunc是一個(gè)Oracle內(nèi)置的函數(shù),可以對(duì)date類型數(shù)據(jù)進(jìn)行“度身裁剪”,來適應(yīng)不同類型的數(shù)據(jù)需求。

在前篇《Oracle日期類型操作幾個(gè)問題》中,我們已經(jīng)了解到date類型的基本知識(shí)。date類型是一種包括年、月、日、時(shí)、分和秒的數(shù)據(jù)類型,可以表示相對(duì)精確的時(shí)間信息。內(nèi)部存儲(chǔ)上,date類型是類似于數(shù)字類型的,可以通過加減操作實(shí)現(xiàn)對(duì)日期的推進(jìn)和后退。

但是,日期格式的精確常常給我們帶來一些困擾,特別是其中的時(shí)分秒信息。很多時(shí)候,我們對(duì)這部分信息是不需要的。比如指定日期查詢、只顯示天信息等等。借助To_char雖然可以實(shí)現(xiàn)一部分這種需要,但是這樣做格式上比較復(fù)雜,而且進(jìn)行了數(shù)據(jù)類型的轉(zhuǎn)換。是否存在不變化數(shù)據(jù)類型的方法,對(duì)日期型數(shù)據(jù)進(jìn)行處理。答案就是trunc函數(shù)。

trunc(date)

截?cái)嗪瘮?shù)trunc的作用就是將日期類型數(shù)據(jù)按照指定格式截?cái)?#xff0c;返回一個(gè)日期變量數(shù)據(jù)。例如:

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDHH2

------------------------------

2010-12-10 20:39:58

SQL> select trunc(sysdate) from dual;

TRUNC(SYSDATE)

--------------

2010-12-10

SQL> select to_char(trunc(sysdate),'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(TRUNC(SYSDATE),'YYYY-M

------------------------------

2010-12-10 00:00:00

默認(rèn)情況下,sysdate函數(shù)返回的日期類型數(shù)據(jù)包括當(dāng)前的具體時(shí)間。通過trunc(date)的處理,直接截取到天信息,返回指定天的零時(shí)。

trunc函數(shù)還支持一個(gè)重載參數(shù),格式字符串:trunc(date,‘format’),用于指定截?cái)嗟奈恢?。如?#xff1a;

//截?cái)嗟侥?/p>

SQL> select trunc(sysdate,'yyyy') from dual;

TRUNC(SYSDATE,'YYYY')

---------------------

2010-1-1

//截?cái)嗟皆?/p>

SQL> select trunc(sysdate,'mm') from dual;

TRUNC(SYSDATE,'MM')

-------------------

2010-12-1

//截?cái)嗟饺?/p>

SQL> select trunc(sysdate,'dd') from dual;

TRUNC(SYSDATE,'DD')

-------------------

2010-12-10

//截?cái)嗟叫r(shí)

SQL> select trunc(sysdate,'hh24') from dual;

TRUNC(SYSDATE,'HH24')

---------------------

2010-12-10 20:00:00

//截?cái)嗟椒昼?/p>

SQL> select trunc(sysdate,'mi') from dual;

TRUNC(SYSDATE,'MI')

-------------------

2010-12-10 20:52:00

使用不同的格式標(biāo)志,可以指示不同的截?cái)辔恢?#xff0c;獲取各種零刻時(shí)間。

格式字符串

說明

yyyy或者year

年度第一天(一月一日零時(shí))

mm或者month

月份第一天(一日零時(shí))

dd或者day

日期零時(shí)(00:00:00)

小時(shí)

hh或者h(yuǎn)h24

幾時(shí)整(XX:00:00)

mi

幾分整(XX:XX:00)

借助trunc函數(shù)和日期類型加減處理,我們可以實(shí)現(xiàn)一些特殊日期的設(shè)置,實(shí)現(xiàn)日期功能,使用在例如Job調(diào)度方面。

//明天零點(diǎn)

SQL> select to_char(trunc(sysdate)+1,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(TRUNC(SYSDATE)+1,'YYYY

------------------------------

2010-12-11 00:00:00

//當(dāng)天早上十點(diǎn)

SQL> select to_char(trunc(sysdate)+10/24,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(TRUNC(SYSDATE)+10/24,'

------------------------------

2010-12-10 10:00:00

//當(dāng)月三號(hào),上午10點(diǎn)半

SQL> select to_char(trunc(sysdate,'mm')+2+10/24+1/48, 'yyyy-mm-dd hh24:mi:ss') from dual;

注:trunc(sysdate,'mm')將時(shí)間取到當(dāng)前月的1號(hào)零時(shí)零分零秒,那么加上2就表示當(dāng)前月的3好零時(shí)零分零秒,再加上'10/24'('10/24'本身表示10個(gè)小時(shí))就是表示當(dāng)月3號(hào)的十點(diǎn)零分零秒,再加上'1/48'('1/48'本身表示30分鐘)就表示當(dāng)月3號(hào)十點(diǎn)三十分零秒

TO_CHAR(TRUNC(SYSDATE,'MM')+2+

------------------------------

2010-12-03 10:30:00

較復(fù)雜的to_char,trunc更加可以發(fā)揮日期類型數(shù)值本身的特色和優(yōu)勢(shì),無論是代碼整潔度還是處理效率都是值得關(guān)注的。

額外多說一句,trunc本身還具有處理數(shù)字截?cái)喙δ?#xff0c;用于截?cái)嘀付ㄎ粩?shù)的數(shù)字類型。

//默認(rèn)截?cái)嗟秸麛?shù),不進(jìn)行四舍五入;

SQL> select trunc(15.743) from dual;

TRUNC(15.743)

-------------

15

//截?cái)嗟叫?shù)點(diǎn)后一位;

SQL> select trunc(15.793,1) from dual;

TRUNC(15.793,1)

---------------

15.7

//截?cái)嗟叫?shù)點(diǎn)前一位;

SQL> select trunc(15.793,-1) from dual;

TRUNC(15.793,-1)

----------------

10

trunc對(duì)數(shù)字和日期類型處理,也折射出日期類型數(shù)據(jù)和數(shù)字之間的間接關(guān)系。

總結(jié)

以上是生活随笔為你收集整理的oracle trunc年,使用Oracle trunc 来指定精确的年月日时分秒的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。