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

よろしくお願いします。
現在oracle10g使用中

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

A 回答 (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年代
と認識してくれるはずです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/15 09:50

基本的には、#2で書かれた考え方・方法で良いとお思いますが・・



select * from hoge order by to_date(substrb(COL,1,2),'RR'),COL;

という感じで良いと思いますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/15 09:52

仮に項目名をa、レコード名をbとします



select a from b order by subsrtb(a,1,2);

でも、もし日付の意味が西暦の下二桁のように
 小 ← 98、99、01 → 大
だとすると期待通りには並ばないと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/15 09:53

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

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