我正在使用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.任何帮助将不胜感激,谢谢.
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)