我在android sqlite数据库中比较时间,这里是我在屏幕截图中的表结构。实际上我有两次,比如8:00和7:30(基本上这些是员工轮班时间),我的数据库中有一列c_TIME
,我想要所有记录在b / w我的两次,即(8:00和7:30)来自c_TIME。
我已经使用过这个查询,但它不起作用,请任何人指导我做错了什么
SELECT *
FROM ATTENDANCE
WHERE strftime('%H','08:00') > strftime('%H', c_TIME) AND
time('08:00') < strftime('%H', c_TIME) AND
STATE = 'IN'
答案 0 :(得分:0)
以下内容应该有效:
SELECT *
FROM ATTENDANCE
WHERE strftime('%H:%M:%S', c_date) > '07:30:00' AND
strftime('%H:%M:%S', c_date) < '08:00:00' AND
STATE = 'IN'
<强>注释:强>
您应该使用c_TIME
,而不是使用c_date
字段。实际上,我没有看到任何保留分别存储时间的列的价值。
strftime
根据某种日期时间/时间戳输入返回一个字符串。 strftime('%H:%M:%S', c_date)
的输出应采用HH:MM:SS
格式,并且此字符串可以按字典顺序与08:00:00
和07:30:00
进行比较。比较应该仍然有效,因为对于相同长度的字符串,它仍应按数字排序。
答案 1 :(得分:0)
尝试:
select * from ATTENDANCE where c_date between 'yyyy-mm-dd' and 'yyyy-mm-dd';
不使用c_TIME,而是使用c_date字段。
您可以相应地更改查询中的日期格式,以便在两个特定时间之间检索数据。
Sqlite支持以下格式:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD
请参阅here