2011-09-30 133 views
6

我有一个格式为'14 -SEP-11 12.33.48.537150 AM'的VARCHAR2值,我需要按原样将它转换为TIMESTAMP。就是喜欢,将VARCHAR2转换为Oracle中的TIMESTAMP

SELECT TO_DATE('14-SEP-11 12.33.48.537150 AM', '<format_string>') FROM DUAL; 

我想从上面的查询返回在TIMESTAMP数据格式'14 -sep-11 12.33.48.537150 AM”。

这应该是'format_string'。

请帮助,因为我试过很多东西,但没有工作.. :(

我使用的是Oracle 11gR2的。

感谢。

回答

9

DATE和TIMESTAMP是两个不同的数据类型。所以,你需要用于每个正确的转换功能,你的情况是TO_TIMESTAMP()

SELECT TO_TIMESTAMP('14-SEP-11 12.33.48.537150 AM', 'DD-MON-RR HH:MI:SS.FF AM') 
FROM DUAL; 
+1

如果我们指定HH24,它会给出错误。它必须是HH,因为我需要它作为AM/PM。无论如何,谢谢这与HH合作。 –

+0

@BathiyaPriyadarshana - 哎呀,习惯的力量:我总是用二十四小时的时钟工作。 – APC

1
select from_tz(to_timestamp('14-SEP-11 12.33.48.537150 PM', 'DD-Mon-RR HH.MI.SS.FF AM'), 'EUROPE/LONDON') from dual