您在這裏混合了兩兩件事:
首先是一個字符串數據類型的轉換,在Oracle VARCHAR2
成DATE
數據類型。 DATE
數據類型的精度爲秒,你不能改變它。 A DATE
數據類型將始終爲您提供日期和時間組件,即年,月,日,小時,分和秒:Oracle SQL Data Type Documentation
但是,您所要求的第二部分是關於如何格式化日期檢索。這在運行報表或其他類型的日期顯示時很有用。例如,在美國,您最希望您的日期列以MM/DD/YYYY
的格式顯示,而世界上其他任何地方最有可能想要使用DD/MM/YYYY
。 Oracle通過告訴它你想使用什麼來實現這一點。您可以爲每個單獨的會話以及數據庫級別設置該參數,由您(和您的DBA)決定何時何地設置該參數。在你的情況下,你可以通過ALTER SESSION
命令申請:
SQL> ALTER SESSION SET nls_date_format='YYYY-MM-DD';
Session altered.
SQL> SELECT TO_DATE('2016-08-15 10:45:30', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
TO_DATE(
----------
2016-08-15
SQL> SELECT TO_DATE('20160815104530', 'YYYYMMDDHH24MISS') FROM DUAL;
TO_DATE(
----------
2016-08-15
你想保留時間部分嗎?因爲Oracle的DATE類型支持日期+時間。 – sstan
我還應該提到,您鏈接的帖子不適用於Oracle。你不能指望在SQL Server或Excel的帖子中找到Oracle有用的信息。爲什麼不去源呢? [TO_DATE官方文檔](https://docs.oracle.com/database/121/SQLRF/functions219.htm#SQLRF06132) – sstan
我只想得到日期,沒有時間部分需要 – triffic