2013-06-05 47 views
1

我使用ORACLE,我想VARCHAR类型转换为时间使用下面的SQL查询转换VARCHAR到时间在Oracle

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

欢迎堆栈溢出。请不要格式化代码作为报价:格式是代码,所以我们可以有语法突出和空白的好东西。这次我为你做了。 –

+0

您的代码不可能返回您声明的输出。它可能触发'ORA-01481:无效数字格式模型'错误。 –

回答

0

你可以用与TO_CHAR和格式是这样的日期:

select to_char(mydate, 'hh24:mi:ss') as mytime from mytable; 
+0

感谢兰迪,但我得到这个错误。 ORA-01481:无效的数字格式模型。 – santhosha

+0

你能用新版本编辑原始问题吗? – Randy

+0

我编辑了以前的代码。 – santhosha

4

是在item_create_tm列中的数字的数据类型? 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 

或者与子串的数量为char:分隔符。

SELECT substr(113202, 1, 2) || ':' || substr(113202, 3, 2) || ':' || substr(113202, 5, 2) FROM dual; 

输出

11:32:02 
+0

非常感谢你 – santhosha

+0

不客气。乐于帮助。 –