1. 程式人生 > 實用技巧 >Oracle 時間格式化異常:無效數字

Oracle 時間格式化異常:無效數字

Oracle 時間格式化 無效數字


欄位名 型別 備註
flightDate varchar 格式:yyyy-mm-dd hh24:mi:ss
  1. 查詢語句:

    select
       TO_CHAR(xxx.flightDate,'hh24:mi')
    from 
        xxx
    
  2. 查詢結果:

    SELECT
    	TO_CHAR(HANDOVER_TIME,'hh24:mi') 
    FROM
    	"T_DOA_FLIGHT_BIZ" 
    WHERE
    	HANDOVER_TIME IS NOT NULL
    > ORA-01722: 無效數字
    
    > 時間: 0.026s
    
  3. 錯誤分析:

    TO_CHAR 函式官方說明

    TO_CHAR (datetime) converts a datetime or interval value of DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, or TIMESTAMP WITH LOCAL TIME``ZONE datatype to a value of VARCHAR2 datatype in the format specified by the date format fmt.

    TO_CHAR 函式接收只能接收不接收VARCHAR型別的資料!

  4. 解決辦法:

    使用TO_DATE函式將VARCHAR型別的資料轉為DATETIME型別,然後再使用TO_CHAR。

    select
       TO_CHAR(TO_DATE(xxx.flightDate,'yyyy-mm-dd hh24:mi:ss'),'hh24:mi')
    from 
        xxx
    
  5. 總結

    graph TB 日期_varchar --TO_DATE--> 日期_datetime--TO_CHAR-->時間_varchar

    脫褲子放屁….