• ベストアンサー

文字のゼロ埋め

初歩的なことかもしれませんがよろしくお願いします。 ----- 時間DB ---------------- 年月日 NUMBER(8,0) 時 NUMBER(2,0) ---------------------------- 次ののSQLを発行すると SELECT * FROM 時間DB WHERE (年月日 || 時) >= 2006030101 AND (年月日 || 時) <= 2006030223 時がNUMBER型なので 2006030110以上のレコードがSELECTされてきてしまいます。 時をゼロ埋めにしてから上記のSQLを発行するには どのようにしたらよいのでしょうか? また,その他に良い方法がございましたら 御教授願います。

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

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

NUMBER型なので、かけ算を使って、桁を揃えるか、 フォーマット付きの文字列変換を使うことになります。 where to_char(年月日,'FM00000000')||to_char(時,'FM00') between '2006030101' and '2006030223' where 年月日 * 100 + 時 between 2006030101 and 2006030223;

-cinq-
質問者

お礼

回答ありがとうございました。 上記の方法でうまくいきました。 2つめの方法で行う事にしました。

その他の回答 (1)

  • dober-o
  • ベストアンサー率59% (260/439)
回答No.1

とりあえず思い付きです。 SELECT * FROM 時間DB WHERE (to_char(年月日) || lpad(to_char(時),2,'0')) >= '2006030101' AND (to_char(年月日) || lpad(to_char(時),2,'0')) <= '2006030223' lpad は左文字埋めです。 参考になれば・・・。

-cinq-
質問者

お礼

回答ありがとうございました。 上記の方法でもうまくいきました。

関連するQ&A