• ベストアンサー

日付書式に変換でこまっています!

文字型を日付型に変えるTO_DATE関数ってありますよね。 もともとのデータは数値型(NUMBER型)だったとしたら、 その数値型を日付型に変換するためには、 例)TO_DATE(TO_CHAR(20001201),'YYYY/MM/DD'))で実行すれば、 結果は、「2000/12/01」になりますよね? しかし、ここで問題なのがもともとのデータの数値型の初期値が0で設定されていて、なおかつその行も結果として出したい場合どうしたらいいのかわかりません。 例が解りにくくてすいません! 何か解決法がありましたらぜひ教えて下さい!

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 > もとのデータの数値型の初期値が0で設定されていて 仮に初期値を西暦1年1月1日で表示するとして、 Select to_date(decode(to_char(項目名, 0, '00010101', 項目名), 'FM99999999'), 'YYYYMMDD') from テーブル名 でどうでしょう? ※ 数値型を日付型に変換するためには・・・ TO_DATE で変換できるのは、CHAR, VARCHAR2, NCHAR, NVARCHAR2 データ型です。

okwebsama
質問者

補足

すいません!解決しました。 ありがとうございますm(--)m

その他の回答 (1)

回答No.1

日付として、0年0月0日は存在しないので、'00000000'をそのままの形で日付として管理できません。 null値で表現するなり、西暦1年1月1日 0時0分0秒の1秒前で表現するなりの置き換えを考えるしかありませんね。 日付型の概念のない処理言語などからのシステム移行で良くある話ですが、 日付として'00000000'は間違っていると考えるか、従来通りにNUMBER型や文字列型で考えるかの2択です。 (日付の演算が無ければ、NUMBER型や文字列型でも問題はないと思いますけど)

関連するQ&A