0

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。指导我去做。

4

1 回答 1

1

您可以使用时间戳/字符串转换函数来简化这一点:

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

NB FF2 是毫秒到 2 位,FF3 是毫秒到 3 位。

于 2012-08-24T13:41:46.750 回答