- ベストアンサー
CHAR型の数字を日付にしたい
よろしくお願いします。 現在oracle10g使用中 CHAR型(7)の中に数字が入っています。 7桁「2ケタ(日付)、2ケタ(品番)、3ケタ(通しNO)」です。 9901001 9901002 9801001 0101001 このデータを日付順(前2ケタ)に並び替えたいのですが、どんなSQL文で記述したらよいかわかりません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
日付型に変換して、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年代 と認識してくれるはずです。
その他の回答 (2)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
基本的には、#2で書かれた考え方・方法で良いとお思いますが・・ select * from hoge order by to_date(substrb(COL,1,2),'RR'),COL; という感じで良いと思いますよ。
お礼
ありがとうございます。 RRという西暦のことを理解していませんでした。 うまくいきました。
- zap35
- ベストアンサー率44% (1383/3079)
仮に項目名をa、レコード名をbとします select a from b order by subsrtb(a,1,2); でも、もし日付の意味が西暦の下二桁のように 小 ← 98、99、01 → 大 だとすると期待通りには並ばないと思います。
お礼
naochancomさんの回答の select * from hoge order by to_date(substrb(field_name,1,2)||'0101','RRMMDD') desc; でうまくいきました。 ありがとうございました
お礼
ありがとうございます。完璧です。 思っている内容の結果が得られました。 RRというのを知らなかったです、勉強不足です。