我正在使用ORACLE
,我希望使用以下SQL查询将VARCHAR
类型转换为时间
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
这导致6/1/2013 11:32:02 AM
,但我不想在这里使用日期部分。
我只需要时间部分11:32:02
,如何做到这一点?
字段CUSTOMER_SERVICE_QUOTE_MEAS.ITEM_CREATE_TM
的数据看起来像113202
。
任何帮助将不胜感激,谢谢。
答案 0 :(得分:6)
item_create_tm列的数据类型是NUMBER吗? to_char期待一个日期列。要复制错误:
SELECT to_char(113202, 'hh24:mi:ss') FROM dual;
它会生成此错误。
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.
您可以先将其转换为日期,然后再转换为格式化的字符。
SELECT to_char(to_date(113202, 'hh24miss'), 'hh24:mi:ss') FROM dual;
输出
11:32:02
或者使用:separators将数字子串到char:
SELECT substr(113202, 1, 2) || ':' || substr(113202, 3, 2) || ':' || substr(113202, 5, 2) FROM dual;
输出
11:32:02
答案 1 :(得分:0)
您可以使用to_char包装日期,格式如下:
select to_char( mydate, 'hh24:mi:ss' ) as mytime from mytable;