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'

对于Time2and Time3,我似乎无法确定SELECT语句条件应该是什么?

问题

处理这种情况的算法和 SQLite 语句应该是什么,即何时返回 , Time1only ID 1,何时返回Time2and Time3, only ID 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 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 回答
0

尝试这个

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