• ベストアンサー

CHAR型の数字を日付にしたい

よろしくお願いします。 現在oracle10g使用中 CHAR型(7)の中に数字が入っています。 7桁「2ケタ(日付)、2ケタ(品番)、3ケタ(通しNO)」です。 9901001 9901002 9801001 0101001 このデータを日付順(前2ケタ)に並び替えたいのですが、どんなSQL文で記述したらよいかわかりません。 よろしくお願いします。

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

  • ベストアンサー
回答No.2

日付型に変換して、order byすればOKだと思います select * from hoge order by to_date(substrb(field_name,1,2)||'0101','RRMMDD') desc; 日付変換に年が2桁なのでRRを使用しております。 00-49 までは、2000年代 50-99 までは、1900年代 と認識してくれるはずです。

noname#69946
質問者

お礼

ありがとうございます。完璧です。 思っている内容の結果が得られました。 RRというのを知らなかったです、勉強不足です。

その他の回答 (2)

回答No.3

基本的には、#2で書かれた考え方・方法で良いとお思いますが・・ select * from hoge order by to_date(substrb(COL,1,2),'RR'),COL; という感じで良いと思いますよ。

noname#69946
質問者

お礼

ありがとうございます。 RRという西暦のことを理解していませんでした。 うまくいきました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

仮に項目名をa、レコード名をbとします select a from b order by subsrtb(a,1,2); でも、もし日付の意味が西暦の下二桁のように  小 ← 98、99、01 → 大 だとすると期待通りには並ばないと思います。

noname#69946
質問者

お礼

naochancomさんの回答の select * from hoge order by to_date(substrb(field_name,1,2)||'0101','RRMMDD') desc; でうまくいきました。 ありがとうございました

関連するQ&A