[英]Oracle: How to convert a string into date format
在問這個問題之前做了很多搜索,例如如何將字符串轉換為日期格式 , 如何將字符串轉換為日期 ,但仍然無法弄清楚。
因此,這是一個問題,如何在Oracle
中將這些字符串日期轉換為日期:
“ 2016-08-15 10:45:30”(字符串類型)-> 20160815(日期類型)
“ 20160815104530”(字符串類型)-> 20160815(日期類型)
任何想法將不勝感激。
您使用to_date()
:
select to_date(substr(str1, 1, 10), 'YYYY-MM-DD')
select to_date(substr(str2, 1, 8), 'YYYYMMDD')
您在這里混合兩件事:
首先是將Oracle VARCHAR2
中的String數據類型轉換為DATE
數據類型。 DATE
數據類型的精度為秒,您無法更改。 DATE
數據類型將始終為您提供日期和時間部分,即年,月,日,小時,分鍾和秒: Oracle SQL數據類型文檔
但是,您要詢問的第二部分是有關如何在檢索時格式化日期。 在運行報告或日期的其他可視顯示方式時,這很有用。 例如,在美國,您很可能希望日期列以MM/DD/YYYY
格式顯示,而在世界上其他任何地方,您都希望使用DD/MM/YYYY
。 Oracle通過告訴您要使用的NLS_DATE_FORMAT
來做到這一點。 您可以為每個單獨的會話以及在數據庫級別上設置該參數,這取決於您(和您的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.