在oracle中将VARCHAR转换为Time

san*_*sha 1 sql oracle types

我正在使用ORACLE,我想VARCHAR使用以下SQL查询将类型转换为时间

SELECT CUSTOMER_SERVICE_QUOTE_MEAS.ITEM_CREATE_TM,
TO_char(
CUSTOMER_SERVICE_QUOTE_MEAS.ITEM_CREATE_TM,
'hh24:mi:ss')
AS TIME_CHANGE
FROM FDC.CUSTOMER_SERVICE_QUOTE_MEAS CUSTOMER_SERVICE_QUOTE_MEAS
Run Code Online (Sandbox Code Playgroud)

这导致6/1/2013 11:32:02 AM但我不希望这里的日期部分.
我只需要时间部分11:32:02,如何做到这一点?

该字段CUSTOMER_SERVICE_QUOTE_MEAS.ITEM_CREATE_TM的数据看起来像这样113202.任何帮助将不胜感激,谢谢.

Exc*_*ace 6

item_create_tm列的数据类型是NUMBER吗?to_char期待一个日期列.要复制错误:

SELECT to_char(113202, 'hh24:mi:ss') FROM dual;
Run Code Online (Sandbox Code Playgroud)

它会生成此错误.

ORA-01481: invalid number format model
01481. 00000 -  "invalid number format model"
*Cause:    The user is attempting to either convert a number to a string
           via TO_CHAR or a string to a number via TO_NUMBER and has
           supplied an invalid number format model parameter.
*Action:   Consult your manual.
Run Code Online (Sandbox Code Playgroud)

您可以先将其转换为日期,然后再转换为格式化的char.

SELECT to_char(to_date(113202, 'hh24miss'), 'hh24:mi:ss') FROM dual;
Run Code Online (Sandbox Code Playgroud)

产量

11:32:02
Run Code Online (Sandbox Code Playgroud)

或者使用:separators将数字子串到char.

SELECT substr(113202, 1, 2) || ':' || substr(113202, 3, 2) || ':' || substr(113202, 5, 2) FROM dual;
Run Code Online (Sandbox Code Playgroud)

产量

11:32:02
Run Code Online (Sandbox Code Playgroud)