Oracle 时间格式化 无效数字
字段名 | 类型 | 备注 |
---|---|---|
flightDate | varchar | 格式:yyyy-mm-dd hh24:mi:ss |
-
查询语句:
select TO_CHAR(xxx.flightDate,'hh24:mi') from xxx
-
查询结果:
SELECT TO_CHAR(HANDOVER_TIME,'hh24:mi') FROM "T_DOA_FLIGHT_BIZ" WHERE HANDOVER_TIME IS NOT NULL > ORA-01722: 无效数字 > 时间: 0.026s
-
错误分析:
TO_CHAR 函数官方说明
TO_CHAR
(datetime) converts a datetime or interval value ofDATE
,TIMESTAMP
,TIMESTAMP
WITH
TIME
ZONE
, orTIMESTAMP
WITH
LOCAL
TIME``ZONE
datatype to a value ofVARCHAR2
datatype in the format specified by the date formatfmt
.TO_CHAR 函数接收只能接收不接收VARCHAR类型的数据!
-
解决办法:
使用TO_DATE函数将VARCHAR类型的数据转为DATETIME类型,然后再使用TO_CHAR。
select TO_CHAR(TO_DATE(xxx.flightDate,'yyyy-mm-dd hh24:mi:ss'),'hh24:mi') from xxx
-
总结
graph TB 日期_varchar --TO_DATE--> 日期_datetime--TO_CHAR-->时间_varchar脱裤子放屁….