这是我的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
= '7点00分00秒'Time3
= '6时00分〇〇秒'对于Time2
和Time3
,我似乎无法确定SELECT
语句条件应该是什么?
问题
处理这种情况的算法和SQLite语句应该是什么,即当它Time1
时,只返回ID 1
,Time2
和Time3
时只返回{{} 1}}被退回了吗?
我使用Java来执行SQLite语句,因此我不确定是否支持所有函数。
答案 0 :(得分: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)
)
);
答案 1 :(得分:0)
试试这个
SELECT * FROM table
WHERE HOUR(StartTime) <= HOUR('14:00:00')
AND HOUR(EndTime) >= HOUR('14:00:00');
答案 2 :(得分:0)
检查一下
SELECT * FROM table
WHERE StartTime <= TIME_FORMAT("14:00:00","%H:%i:%s")
AND EndTime >= TIME_FORMAT("14:00:00","%H:%i:%s");