0

日期列中的某些日期的年份不正确。如何更改年份的前两位数字?

例如:

select 
ID,
to_char(END_DT,'yyyy-mm-dd hh:mi:ss') as dt
From DB

结果:

ID   dt
1    0207-08-10 12:00:00
2    0208-03-31 12:00:00
3    0200-11-10 12:00:00

我希望结果如下所示:

ID   dt
1    2007-08-10 12:00:00
2    2008-03-31 12:00:00
3    2000-11-10 12:00:00
4

2 回答 2

0

如果您只想“获取”正确的日期,您可以使用类似

select 
  substr(to_char(END_DT,'yyyy'),2,1) ||
  substr(to_char(END_DT,'yyyy'),1,1) || 
  substr(to_char(END_DT,'yyyy'),3,2) ||'-'||
  to_char(END_DT,'mm-dd hh:mi:ss')
  as dt
From DB;
于 2012-08-13T20:36:43.757 回答
0

如果这是一致的格式问题,则以下逻辑应该可以解决问题:

select (case when left(to_char(END_DT, 'yyyy'), 2) = '02'
             then '20'||substr(to_char(END_DT,'yyyy-mm-dd hh:mi:ss'), 3, 100)
             else to_char(END_DT,'yyyy-mm-dd hh:mi:ss')
        end) as BetterFormat

这假设问题在于前两位数字颠倒了,并且这在 2000 年之前没有发生。

但是,我必须强调,数据库中的数据不正确。正确的做法是修复数据库中的数据。从中期来看,掩盖问题可能会使事情变得更糟。

于 2012-08-13T21:02:37.773 回答