0

日付列の一部の日付の年が正しくありません。年の上 2 桁を変更するにはどうすればよいですか?

例えば:

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

これは、最初の 2 桁が逆になっていることが問題であり、これが 2000 年より前には起こらなかったことを前提としています。

ただし、データベース内のデータが正しくないことを強調しなければなりません。正しいことは、データベース内のデータを修正することです。問題を隠蔽することは、中期的に事態を悪化させる可能性があります。

于 2012-08-13T21:02:37.773 に答える