アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

日付として、0年0月0日は存在しないので、'00000000'をそのままの形で日付として管理できません。



null値で表現するなり、西暦1年1月1日 0時0分0秒の1秒前で表現するなりの置き換えを考えるしかありませんね。

日付型の概念のない処理言語などからのシステム移行で良くある話ですが、
日付として'00000000'は間違っていると考えるか、従来通りにNUMBER型や文字列型で考えるかの2択です。
(日付の演算が無ければ、NUMBER型や文字列型でも問題はないと思いますけど)
    • good
    • 0

こんにちわ。



> もとのデータの数値型の初期値が0で設定されていて
仮に初期値を西暦1年1月1日で表示するとして、
Select to_date(decode(to_char(項目名, 0, '00010101', 項目名), 'FM99999999'), 'YYYYMMDD')
from テーブル名
でどうでしょう?

※ 数値型を日付型に変換するためには・・・
TO_DATE で変換できるのは、CHAR, VARCHAR2, NCHAR, NVARCHAR2
データ型です。

この回答への補足

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

補足日時:2007/02/18 11:41
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す