基于时间格式“HH:mm:ss”的SQLite SELECT记录

时间:2012-08-14 08:56:13

标签: sqlite select

这是我的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分〇〇秒'

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

问题

处理这种情况的算法和SQLite语句应该是什么,即当它Time1时,只返回ID 1Time2Time3时只返回{{} 1}}被退回了吗?

我使用Java来执行SQLite语句,因此我不确定是否支持所有函数。

3 个答案:

答案 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");