- ベストアンサー
文字のゼロ埋め
初歩的なことかもしれませんがよろしくお願いします。 ----- 時間DB ---------------- 年月日 NUMBER(8,0) 時 NUMBER(2,0) ---------------------------- 次ののSQLを発行すると SELECT * FROM 時間DB WHERE (年月日 || 時) >= 2006030101 AND (年月日 || 時) <= 2006030223 時がNUMBER型なので 2006030110以上のレコードがSELECTされてきてしまいます。 時をゼロ埋めにしてから上記のSQLを発行するには どのようにしたらよいのでしょうか? また,その他に良い方法がございましたら 御教授願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
NUMBER型なので、かけ算を使って、桁を揃えるか、 フォーマット付きの文字列変換を使うことになります。 where to_char(年月日,'FM00000000')||to_char(時,'FM00') between '2006030101' and '2006030223' where 年月日 * 100 + 時 between 2006030101 and 2006030223;
その他の回答 (1)
- dober-o
- ベストアンサー率59% (260/439)
とりあえず思い付きです。 SELECT * FROM 時間DB WHERE (to_char(年月日) || lpad(to_char(時),2,'0')) >= '2006030101' AND (to_char(年月日) || lpad(to_char(時),2,'0')) <= '2006030223' lpad は左文字埋めです。 参考になれば・・・。
お礼
回答ありがとうございました。 上記の方法でもうまくいきました。
お礼
回答ありがとうございました。 上記の方法でうまくいきました。 2つめの方法で行う事にしました。