こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2005-05-26 19:19:04

QNo.1411568

すぐに回答ほしいです

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

日付検索を行う場合は、以下のように書式を含める必要があります。

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')

と書くべきでしょうね。

投稿日時 - 2005-05-27 11:03:53

ANo.3

このQ&Aは役に立ちましたか?

17人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

みなさんの回答も正解です。

もうひとつ、trunc関数を使用することが出来たはず

where trunc(col1) =
to_date('2005/05/26', 'YYYY/MM/DD')

投稿日時 - 2005-05-31 02:50:43

ANo.4

#1さんや#2さんの方法で結論は出ていると思いますが。。。

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

投稿日時 - 2005-05-27 11:38:27

ANo.2

#1さんの方法で良いでしょうがどうしても時刻が必要なら。

to_char([日付型の列名], 'yyyy/mm/dd hh24:mi:ss')と編集して、
比較してください。

投稿日時 - 2005-05-26 20:19:30

ANo.1

こんばんは。

>>BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'
BETWEENの前後は、ただの文字列ですよ?

>>2005/05/26 を抽出したいのですが
WHERE TO_CHAR(カラム,'YYYYMMDD')='20050526'
でいいのでは?
(^^ゞ

投稿日時 - 2005-05-26 19:58:33

あなたにオススメの質問