2016-09-06 68 views
-1

在Oracle 11g中,如何将像这样的“1234”这样的字符串转换为像这样的“12:34”这样的时间格式。将字符串转换为时间格式

我试过to_char('1234', 'HH:MI')但我得到一个无效的数字格式模型。

+0

不要在字符串上调用'to_char' - 它已经是一个字符串了! –

回答

0
select to_date('1234','hh24mi') from dual; 

它假定今天的日期的12时34

-2

的时间成分,如果你想改变的字符串类型,你可以使用下面的代码日期类型:

TO_DATE('2006-06-15', 'YYYY-MM-DD') 
TO_DATE('<your string>','hh24mi') 

但如果要保存字符串类型并只需将字符添加到字符串中,则可以使用代码:

SUBSTR(string, start_position, [ length ]) 

In adv可以使用regexp_replace命令。此命令的更多详细信息在 中this link

3

Oracle没有时间数据类型。

它具有DATETIMESTAMP数据类型(两者都具有的时间成分,但它们也具有年,月和日),它有一个INTERVAL DAY TO SECOND数据类型(即,两个TIMESTAMP S之间的差)。

如果你想与今天的日期时间:

TO_DATE('1234', 'HH24MI') 

将输出与组件日期:

2016-09-06 12:34:00 

如果你想那么间隔:

NUMTODSINTERVAL(SUBSTR('1234', 1, 2), 'HOUR') 
    + NUMTODSINTERVAL(SUBSTR('1234', 3, 2), 'MINUTE') 

威尔输出组件间隔:

+00 12:34:00.000000 
1

我发现它:

SELECT TO_CHAR (TO_DATE ('1234', 'HHMi'), 'HH:Mi') FROM DUAL; 
12:34 

感谢您的帮助。

+0

请注意,'HH'为12小时制。 –

相关问题