トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-2 Date型の年のみを変更
SQLパズル
Col(Date型)の、年が2020年のデータの年のみを2003年にして出力する。
ただし2020年2月29日は、2003年2月28日として出力する。
データ作成スクリプト
create table WrongDate(Col date);
begin
for i in 1..380 loop
insert into WrongDate values(to_date('20191228','yyyymmdd')+i);
end loop;
commit;
end;
/
SQL
--■■■case式を使う方法■■■
select to_char(Col,'yyyy/mm/dd') as Col,
case when to_char(Col,'yyyy/mm/dd') = '2020/02/29' then '2003/02/28'
when to_char(Col,'yyyy')='2020' then to_char('2003/' || to_char(Col,'mm/dd'))
else to_char(Col,'yyyy/mm/dd') end as FixedCol
from WrongDate
order by Col;
--■■■Replace関数を使う方法■■■
select to_char(Col,'yyyy/mm/dd') as Col,
replace(replace(to_char(Col,'yyyy/mm/dd'),'2020/','2003/'),'2003/02/29','2003/02/28') as FixedCol
from WrongDate
order by Col;
解説
case式で2月29日かチェックする方法や、
Replace関数を使う方法があります。