在oracle中将VARCHAR转换为Time

时间:2013-06-05 13:27:29

标签: sql oracle types

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

2 个答案:

答案 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;