1.需求描述
對系統日期進行格式化,並仍保持日期類型
2.錯誤方法
直接使用to_date()實現
SELECT TO_DATE(SYSDATE,'YYYY-MM-DD') FROM DUAL;
這樣查出來的結果不對
錯誤原因:to_date()函數是類型轉換,不是格式轉換,字符串和后面的格式要匹配;格式轉換使用to_char()。
to_date(sysdate,'yyyy-MM-dd')與to_date(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd')區別
下面我們來看一下,to_date和to_char的問題:
select to_date(sysdate,'yyyy-MM-dd'),to_date(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd') from dual;
注:不同的客戶端處理可能不一致:有些能查出日期(日期不正確),有些直接報錯
3.正確方法
SELECT TO_DATE(TO_CHAR(SYSDATE,'YYYY-MM-DD'),'YYYY-MM-DD') FROM DUAL;
先將系統時間使用to_char()格式化成yyyy-mm-dd格式的字符串,然后使用to_date()轉換成yyyy-mm-dd格式的日期類型
————————————————
參考:https://blog.csdn.net/baidu_37107022/article/details/78450564?utm_source=blogxgwz2
https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions203.htm#SQLRF06132
http://www.aiphere.com/oracle-mon-date-trans.html