介紹TO_DATE之前我們先看下 DATE 數據類型:
DATE 數據類型
DATE 數據類型允許你存儲當前的時間點,但要注意的是,這個時間點是精確到秒的,
毫秒是無法用這個格式存儲的
DATE數據類型存儲 年,月,天,小時,分鍾和秒
DATE數據類型的格式化
SELECT value FROM V$NLS_PARAMETERS WHERE parameter = 'NLS_DATE_FORMAT';
在oracle數據庫系統中,我們可以看到它的值是:
DD-MON-RR
我們可以通過修改NLS_DATE_FORMAT
的值來改變系統默認的日期輸出格式:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
我們來驗證我們的修改,執行下面的語句
SELECT sysdate FROM dual;
結果:
2020-06-11
進入主題 TO_DATE():
SELECT TO_DATE( '2020-06-11', 'yyyy-mm-dd' ) FROM dual;
結果:
2020-06-11
除了TO_DATE()函數,我們還可以使用如下的語法通過指定DATE字符來實現:
DATE 'YYYY-MM-DD'
我們來創建一張表作為演示:
CREATE TABLE my_events ( event_id NUMBER GENERATED BY DEFAULT AS IDENTITY, event_name VARCHAR2 ( 255 ) NOT NULL, location VARCHAR2 ( 255 ) NOT NULL, start_date DATE NOT NULL, end_date DATE NOT NULL, PRIMARY KEY ( event_id ) );
分別使用DATE字符和TO_DATE函數插入數據:
INSERT INTO my_events (event_name, location, start_date, end_date) VALUES ( 'Oracle OpenWorld', 'San Francisco, CA, USA', TO_DATE( 'October 01, 2017', 'MONTH DD, YYYY' ), TO_DATE( 'October 05, 2017', 'MONTH DD, YYYY')); INSERT INTO my_events (event_name, location, start_date, end_date) VALUES ( 'TechEd US', 'Las Vegas, NV, USA' DATE '2017-09-25', DATE '2017-09-29' );
結果:
SELECT * FROM my_events;
我們可以看到都成功插入了
基本的DATE格式化元素介紹:
YYYY 四位數據的年
YYY 年的后三位
YY 年的后兩位
Y 年的最后以為
MM 月份(01-12)
DDD 年中的天(1-366)
DD 月中的天(1-31)
D 星期中的天(1-7)
HH 一天中的小時(1-12)
HH12 一天中的小時(1-12)
HH24 一天中的小時(0-23)24小時制
MI 分鍾(0-59)
SS 秒(0-59)