1

これは私のSQLiteデータベーステーブルです:

+----+-----------+----------+
| ID | StartTime | EndTime  |
+----+-----------+----------+
|  1 | 07:00:01  | 23:00:00 |
|  2 | 23:00:01  | 07:00:00 |
+----+-----------+----------+

今、私はそれらを選択するためのSQLクエリを作成するのに問題があります。

  • Time1= '14:00:00'

使用しました

SELECT * FROM 'table' 
WHERE StartTime <= '14:00:00'
AND EndTime >= '14:00:00';

Time1返品を選択した結果は正しいです、私は欲しいものを手に入れました。

だが

  • Time2= '07:00:00'
  • Time3= '06:00:00'

Time2とについて、ステートメントの条件Time3を決定できないようです。SELECT

質問

そのような状況を処理するためのアルゴリズムとSQLiteステートメントはどうあるべきですか?つまり、それが返されるときだけ、そしてTime1だけが返さID 1れるときはどうでしょうか?Time2Time3ID 2

Javaを使用してSQLiteステートメントを実行しているため、すべての関数がサポートされているかどうかわかりません。

4

3 に答える 3

2

クエリの例(SQLFiddle)は次のとおりです。

select * from t where 
(
(StartTime<=EndTime) and 
 ('07:00:00' between StartTime and EndTime)
)
 or
(
(StartTime>EndTime) and 
 ( 
    ('07:00:00' between StartTime and '23:59:59')
     or
    ('07:00:00' between '00:00:00' and EndTime)

 )
);
于 2012-08-14T11:57:00.273 に答える
0

これを試して

SELECT * FROM table 
WHERE HOUR(StartTime) <= HOUR('14:00:00')
AND HOUR(EndTime) >= HOUR('14:00:00');
于 2012-08-14T09:04:43.713 に答える
0

これをチェックしてください

SELECT * FROM table 
WHERE StartTime <= TIME_FORMAT("14:00:00","%H:%i:%s") 
AND EndTime >= TIME_FORMAT("14:00:00","%H:%i:%s");
于 2012-08-14T09:38:21.297 に答える