oracle中是否有stuff()函数?

时间:2012-08-24 13:26:58

标签: sql oracle11g

oracle中有没有相同的东西功能?我使用mssql中的stuff函数将原始日期时间(以字符串格式)转换为正确的日期时间 MSSQL查询

select convert(datetime,
      '20'+substring(stuff(stuff(stuff(stuff(stuff(stuff(convert(varchar,'24051103084950') , 3,0,'-'), 6,0,'-'), 9,0,' '), 12,0,':'), 15,0,':'), 17,2,''),7,2)+'-' 
      +SUBSTRING(stuff(stuff(stuff(stuff(stuff(stuff(convert(varchar,'24051103084950'),3,0,'-'),   6,0,'-'),  9,0,' '), 12,0,':'), 15,0,':'), 17,2,''),4,2)+'-'
      +SUBSTRING (stuff(stuff(stuff(stuff(stuff(stuff(convert(varchar,'24051103084950'), 3,0,'-'), 6,0,'-'), 9,0,' '), 12,0,':'), 15,0,':'), 17,2,''),1,2)
      + SUBSTRING(stuff(stuff(stuff(stuff(stuff(stuff( convert(varchar,'24051103084950'),3,0,'-'),   6,0,'-'), 9,0,' '), 12,0,':'), 15,0,':'), 17,2,''),9,15))

在上面的查询中,'24051103084950' ddmmyyhhmiss 格式的原始数据。上述查询的输出如下

(No column name)
2011-05-24 03:08:40.000

我需要将同一个查询转换为oracle。指导我去做。

1 个答案:

答案 0 :(得分:1)

您可以使用时间戳/字符串转换功能来简化此操作:

select to_char(
         to_timestamp('24051103084950', 'DDMMYYHH24MISSFF2'), 
         'YYYY-MM-DD HH24:MI:SS.FF3') 
  from dual

N.B。 FF2是毫秒到2位,FF3是毫秒到3位。