日期列中的某些日期的年份不正确。如何更改年份的前两位数?
例如:
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
答案 0 :(得分: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;
答案 1 :(得分: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年之前没有发生。
但是,我必须强调,数据库中的数据不正确。正确的做法是修复数据库中的数据。掩盖这个问题可能会使中期变得更糟。