時間類型
plsql提供了兩種和時間相關的數據類型:datetime 和 intertime
時間相關的函數、操作
- 獲取當前時間
select sysdate from dual; --output 2017/2/9 12:20:53 (數據庫的lang爲ZHS)
select trunc(sysdate) from dual; --2017/2/9
- 與字符串之間的格式轉換
select tochar(sysdate,'yyyy-mm-dd hh24:mi:ss') from daul; -- 2017-02-09 12:24:38
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual; -- 2017-02-09 12:24:57
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss ww d') from dual; -- 2017-02-09 12:38:57 06 5 表示當前年的第6周,第5天。 更多的FORMAT可參考官網手冊
- 與時間相關的函數
select add_months(sysdate,12) from dual; --2018/2/9 12:27:43
select last_day(sysdate) from dual; -- 2017/2/28 12:28:33
select months_between(sysdate, sysdate - 31) from dual; --31
select next_day(sysdate,'星期一')from dual; --2017/2/13 12:36:15 用於計算X時間後第一個星期Y的時間。Y是一個字符串,表示用當前會話語言表示的一週中某一天的全稱(如星期一、星期二等),也可以是數值。英語環境爲monday tuesday wednesday thursday friday saturday sunday ;
select round(to_number(sysdate - (sysdate-1))*24*60) from dual; --1440 分鐘 默認按照天數來計算
- 時間戳
時間戳是date類型的擴展,比date記錄更精確的時間(更多的秒位).Oracle的timestamp的默認時間精度是微秒(p=6),而Oracle能記錄到(p=9)也就是納秒。可用於數據庫回滾、對時間要求比較高的地方。
select current_timestamp from dual; -- 09-2月 -17 12.45.22.716437 下午 +08:00 當前會話的
select systimestamp from dual; --09-2月 -17 12.46.58.476939 下午 +08:00 當前系統的
flashback table students to timestamp to_timestamp ('2018/2/9 12:27:43','mm/dd/yyyy hh24:mi:ss');
- job計劃
DBMS_JOB.SUBMIT(
job OUT BINARY_INTEGER, --job號
what IN VARCHAR2,
NEXT_DATE IN DATE DEFAULTSYSDATE,
interval IN VARCHAR2 DEFAULT 'NULL',
no_parse IN BOOLEAN DEFAULT FALSE,
instance IN BINARY_INTEGER DEFAULT ANY_INSTANCE,
force IN BOOLEAN DEFAULT FALSE);