• ベストアンサー

Oracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。 データベースはオラクルを使っていて、 SQL文で、抽出するときにエラーが出て困っています。 日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。 2005/05/26 を抽出したいのですが、 BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59' だと、エラーでできません。 どなた様か、ご教授よろしくお願いしますm(_ _)m

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

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.3

日付検索を行う場合は、以下のように書式を含める必要があります。 col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS') ただ、厳密には col >= TO_DATE('2005/05/26', 'YYYY/MM/DD') AND col < TO_DATE('2005/05/27', 'YYYY/MM/DD') と書くべきでしょうね。

その他の回答 (4)

  • sapporo30
  • ベストアンサー率33% (905/2715)
回答No.5

みなさんの回答も正解です。 もうひとつ、trunc関数を使用することが出来たはず where trunc(col1) = to_date('2005/05/26', 'YYYY/MM/DD')

  • hamu1
  • ベストアンサー率66% (2/3)
回答No.4

#1さんや#2さんの方法で結論は出ていると思いますが。。。 補足です。 Date型のカラムに対して 文字型の条件を指定した場合、 デフォルトフォーマットとして 現行セッションのNLS_DATE_FORMATが採用されます。 例えば、NLS_DATE_FORMATが「RR-MM-DD」になっていれば WHERE カラム='05-05-26'や WHERE カラム='2005-05-26' と書けばよいはずです。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

#1さんの方法で良いでしょうがどうしても時刻が必要なら。 to_char([日付型の列名], 'yyyy/mm/dd hh24:mi:ss')と編集して、 比較してください。

回答No.1

こんばんは。 >>BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59' BETWEENの前後は、ただの文字列ですよ? >>2005/05/26 を抽出したいのですが WHERE TO_CHAR(カラム,'YYYYMMDD')='20050526' でいいのでは? (^^ゞ

関連するQ&A