- 締切済み
明治・大正の和暦を西暦に変換する方法について
お世話になります。 データベース(Oracle10g)に「M150401」や「T050501」のように和暦形式で登録されている生年月日を 西暦に変換(18820401・19160501)したく下記SQL update テーブル名 set 生年月日= to_char(to_date(生年月日,'eyymmdd','nls_calendar = ''Japanese Imperial'''),'yyyymmdd') を実行すると、「ORA-01864:指定した日付は 現行カレンダの有効範囲外です」のエラーが発生し、大正以前の生年月日を西暦に 変換できません。 このようなケースの場合、どのようにすれば西暦変換できるでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
回答No.2
どこまでやるかの問題だと思います。 普通は明治まで対象にしたい場合が大多数だと思うので、PL/SQLで明治、大正、昭和、平成の開始日(開始年ではありません)から変換するストアドファンクションを作成するのが一番工数も少なくて済むと思います。 明治 1868/9/8~ 大正 1912/7/30~ 昭和 1926/12/25~ 平成 1989/1/8~
- SaKaKashi
- ベストアンサー率24% (755/3136)
回答No.1
update テーブル名 set 生年月日= to_char(to_date(生年月日,'EYYMMDD'),'YYYYMMDD') では
質問者
補足
SaKaKashiさん 教えていただいたやり方だと数値の書式エラーが出て使えませんでした。 ありがとうございます。
お礼
nora1962さん PL/SQLではないのですが、nora1962さんの助言がヒントになり SQL文のcase when文で元号の開始年をプラスして西暦年を 求める事ができました。月日はそのまま結合すればいいので 完結しました。ありがとうございます。