OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

オラクルの条件で時間を指定する方法

  • すぐに回答を!
  • 質問No.7754440
  • 閲覧数551
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (46/46)

オラクルの条件で時間を指定する方法と格闘中です。

ログのようなデータがたくさんあってそこから、
18時~翌2時のデータはいくつあるか。

というSQL文を書きたいのですが、
うまくいきません。以下のようなSQLなのですが、
どなたかアドバイスいただけないでしょうか?

SELECT COUNT(*) as CNT, ID
FROM テーブル名
WHERE
TO_DATE(DATE型カラム, 'HH24:MI') >= '18:00'
AND
TO_DATE(DATE型カラム, 'HH24:MI') < '02:00'
GROUP BY ID
ORDER BY CNT;

ちなみにこんなエラーが出ています。

SQLエラー: ORA-01843: 指定した月が無効です。

よろしくお願いいたします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル10

ベストアンサー率 71% (98/137)

TO_DATEは文字列をDATEに変換する関数。
DATEをDATEに変換してどうする?

また、大小比較するので、0時を跨ぐ場合(0時を跨ぐかどうかは、FROM>TOで判定可能)は
日付カラム >= 18:00 or 日付カラム < 02:00
にする必要あり

わかりやすくすると、
(18:00 <= 日付カラム AND 日付カラム < 24:00)
OR
(00:00 <= 日付カラム AND 日付カラム < 02:00)
だが、マイナスの時刻や24時を超えた時刻は存在しないから前述のとおり
お礼コメント
duowhite

お礼率 100% (46/46)

ありがとうございます。
根本的にTO_DATEは間違っていたのですね・・・。

TO_CHARで文字に変換してやってみたところうまくいきました。
深夜0時を越えた時の処理も教えていただいた方法で問題なく動作しました。

助かりました。素早い回答ありがとうございます!
投稿日時 - 2012-10-18 16:28:57
-PR-
-PR-
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ