本篇文章給大家?guī)砹岁P(guān)于Oracle的相關(guān)知識(shí),其中主要介紹了一些常用的日期函數(shù)相關(guān)問題,包括了SYSDATE、ADD_MONTHS、LAST_DAY、TRUNC、ROUND等等,希望對(duì)大家有幫助。
推薦教程:《Oracle教程》
系統(tǒng)日期、時(shí)間函數(shù)
SYSDATE函數(shù)
該函數(shù)沒有參數(shù),可以得到系統(tǒng)的當(dāng)前時(shí)間。
案例代碼:
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
結(jié)果:
SYSTIMESTAMP函數(shù)
該函數(shù)沒有參數(shù),可以得到系統(tǒng)的當(dāng)前時(shí)間,該時(shí)間包含時(shí)區(qū)信息,精確到微秒。
案例代碼
select systimestamp from dual;
結(jié)果:
數(shù)據(jù)庫(kù)時(shí)區(qū)函數(shù)
DBTIMEZONE函數(shù)
該函數(shù)沒有輸入?yún)?shù),返回?cái)?shù)據(jù)庫(kù)時(shí)區(qū)。
案例代碼:
select dbtimezone from dual;
結(jié)果:
給日期加上指定的月份函數(shù):
ADD_MONTHS(r,n)函數(shù)
該函數(shù)返回在指定日期r上加上一個(gè)月份數(shù)n后的日期。其中
r:指定的日期。
n:要增加的月份數(shù),如果N為負(fù)數(shù),則表示減去的月份數(shù)。
案例代碼:
select to_char(add_months(to_date('2018-11-12', 'yyyy-mm-dd'), 1), 'yyyy-mm-dd'), to_char(add_months(to_date('2018-10-31', 'yyyy-mm-dd'), 1), 'yyyy-mm-dd'), to_char(add_months(to_date('2018-09-30', 'yyyy-mm-dd'), 1), 'yyyy-mm-dd') from dual;
結(jié)果:(如果指定的日期是月份的最后一天,返回的也是新的月份的最后一天,如果新的月份比指定的月份日期少,將會(huì)自動(dòng)調(diào)回有效日期)
月份最后一天函數(shù)
LAST_DAY(r)函數(shù)
返回指定r日期的當(dāng)前月份的最后一天日期。
案例代碼:
select last_day(sysdate) from dual;
結(jié)果:
指定日期后一周的日期函數(shù):
NEXT_DAY(r,c)函數(shù)
返回指定R日期的后一周的與r日期字符(c:表示星期幾)對(duì)應(yīng)的日期。
案例代碼:
select next_day(to_date('2018-11-12','yyyy-mm-dd'),'星期四') from dual;
結(jié)果:
返回指定日期中特定部分的函數(shù)
EXTRACT(time)函數(shù)
返回指定time時(shí)間當(dāng)中的年、月、日、分等日期部分。
案例代碼:
select extract(year from timestamp '2018-11-12 15:36:01') as year, extract(month from timestamp '2018-11-12 15:36:01') as month, extract(day from timestamp '2018-11-12 15:36:01') as day, extract(minute from timestamp '2018-11-12 15:36:01') as minute, extract(second from timestamp '2018-11-12 15:36:01') as second from dual;
結(jié)果:
返回兩個(gè)日期間的月份數(shù):
MONTHS_BETWEEN(r1,r2)函數(shù)
該函數(shù)返回r1日期和r2日期直接的月份。當(dāng)r1>r2時(shí),返回的是正數(shù),假如r1和r2是不同月的同一天,則返回的是整數(shù),否則返回的小數(shù)。當(dāng)r1<r2時(shí),返回的是負(fù)數(shù)。
案例代碼:
select months_between(to_date('2018-11-12', 'yyyy-mm-dd'), to_date('2017-11-12', 'yyyy-mm-dd')) as zs, --整數(shù) months_between(to_date('2018-11-12', 'yyyy-mm-dd'), to_date('2017-10-11', 'yyyy-mm-dd')) as xs, --小數(shù) months_between(to_date('2017-11-12', 'yyyy-mm-dd'), to_date('2018-10-12', 'yyyy-mm-dd')) as fs --負(fù)數(shù) from dual;
結(jié)果:
日期截取函數(shù)
ROUND(r[,f])函數(shù)
將日期r按f的格式進(jìn)行四舍五入。如果f不填,則四舍五入到最近的一天。
案例代碼:
select sysdate, --當(dāng)前時(shí)間 round(sysdate, 'yyyy') as year, --按年 round(sysdate, 'mm') as month, --按月 round(sysdate, 'dd') as day, --按天 round(sysdate) as mr_day, --默認(rèn)不填按天 round(sysdate, 'hh24') as hour --按小時(shí) from dual;
結(jié)果:
TRUNC(r[,f])函數(shù)
將日期r按f的格式進(jìn)行截取。如果f不填,則截取到當(dāng)前的日期。
案例代碼:
select sysdate, --當(dāng)前時(shí)間 trunc(sysdate, 'yyyy') as year, --按年 trunc(sysdate, 'mm') as month, --按月 trunc(sysdate, 'dd') as day, --按天 trunc(sysdate) as mr_day, --默認(rèn)不填按天 trunc(sysdate, 'hh24') as hour --按小時(shí) from dual;
結(jié)果:
推薦教程:《Oracle學(xué)習(xí)教程》