資料庫日期函式

2021-08-02 22:21:22 字數 3971 閱讀 9117

想要進行日期的操作必須知道當前日期:可以使用sysdate偽列取得當前日期。

1.      

add_months(

日期,數字

):在指定的日期上加入指定月數,求出新的日期;

2.      

months_between(

日期1,

日期2)

:求出兩個日期間的僱擁月數;

3.      

next_day(

日期,星期數

):求出下個日期的最後一天日期;

4.      

last_day(日期)

:求出限定日期月的最後天日期;

5.      

extract(

格式from資料)

:日期時間分割,或計算限定兩個日期的間隔;

偽列:不是表中的列,但是可以在查詢中使用;

selectsysdate

from dual;

查詢當前日期操作:

1.altersession set nls_date_format=』yyyy-mm-dd hh24:mi:ss』;(修改語言環境)

2.select sysdatefrom dual;

日期操作公式:

日期-數字(天數)=日期

日期+數字(天數)=日期    

日期-日期=數字(天數):沒有日期+日期;

範例操作:

select

sysdate - 3 前三天,

sysdate + 3 後三天

from dual;

1.      查出每個雇員到今天為止僱傭天數,以及十天前每個雇員的僱傭天數:

select

empno 雇員編號,

ename 雇員名稱,

trunc(sysdate-hiredate) 僱傭天數,

trunc((sysdate-10)-hiredate) 十天前的僱擁天數

from emp;     

2.      驗證add_months()函式:

select sysdate,

add_months(sysdate,3) 三個月之後的日期

add_months(sysdate,-3) 三個月之前的日期

from dual;

3.      驗證next_day()函式:

select sysdate,

next_day(sysdate,'星期日') 下乙個星期日的日期,

next_day(sysdate,'星期一') 下個星期一的日期

from dual;

4.      驗證last_day()函式:

select

last_day(sysdate)

from dual;

查詢所有是在其僱擁所在月的倒數第三天被公司僱擁的雇員資訊:

selectempno,ename,job,hiredate,last_day(hiredate)

from emp

wherelast_day(hiredate)-2=hiredate;

5.      months_between()函式:

查詢每個雇員的編號,姓名,僱擁日期,僱擁的月數及年份:

select

empno,

ename,

hiredate,

trunc(months_between(sysdate,hiredate))僱擁總月數,

trunc(months_between(sysdate,hiredate)/12)僱擁總年份

fromemp;

查詢每個雇員的編號,姓名,僱傭日期,已僱傭的多年份零多少個月零幾天:

selectempno,ename,hiredate,

trunc(months_between(sysdate,hiredate)/12) 僱傭的年份,

trunc(mod(months_between(sysdate,hiredate),12)) 僱傭的月份,

trunc(sysdate - add_months(hiredate,months_between(sysdate,hiredate)))僱傭的天數

from emp;

6.      extract()函式:

分離日期「2017-02-01」:

select

extract(year from date '2017-02-01') years,

extract(month from date '2017-02-01') months,

extract(day from date '2017-02-01') days

from dual;

取得時間的毫秒:

select

sysdate, systimestamp

from dual;

select

extract(year from systimestamp) years,

extract(month from systimestamp) months,

extract(day from systimestamp) days,

extract(hour from systimestamp) huors,

extract(minute from systimestamp) minutes,

extract(second from systimestamp) seconds

from dual;

7.      轉換函式to_timestamp(),可以將字串變為時間戳:

select

to_timestamp('2015-02-1612:13:14','yyyy-mm-dd hh24:mi:ss'),

to_timestamp('2018-02-15 13:14:15','yyyy-mm-dd hh24:mi:ss')

from dual;

求得兩個時間的間隔天數:

select

extract(day from to_timestamp('2015-02-16 12:13:14','yyyy-mm-ddhh24:mi:ss')-

to_timestamp('2012-02-15 13:14:15', 'yyyy-mm-dd hh24:mi:ss')) days

from dual;

運用子查詢查詢分秒:

select

extract(day from to_timestamp('1982-08-13 12:17:57','yyyy-mm-ddhh24:mi:ss')-

to_timestamp('1981-09-27 09:08:33', 'yyyy-mm-dd hh24:mi:ss')) days,

extract(hour from datetime_one - datetime_two) hours,

extract(minute from datetime_one - datetime_two) minutes,

extract(second from datetime_one - datetime_two) seconds

from (

select to_timestamp('1982-08-13 12:17:57','yyyy-mm-dd hh24:mi:ss')datetime_one,

to_timestamp('1981-09-27 09:08:33', 'yyyy-mm-dd hh24:mi:ss')datetime_two

from dual);

SQL資料庫中日期函式

sqlserver時間日期函式詳解 1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 返回 2004 10 17 00 00...

oracle資料庫 日期函式用法

oracle資料庫 日期函式用法 oracle trunc 函式的用法 日期 1.select trunc sysdate from dual 2013 01 06 今天的日期為2013 01 06 2.select trunc sysdate,mm from dual 2013 01 01 返回當...

關於SqlServer資料庫日期函式

關於sqlserver資料庫日期函式 1 獲取當前時間 select getdate 2 擷取需要的值 select datepart year,getdate select datepart month,getdate select datepart day,getdate select date...