Android sqlite时间比较问题

时间:2016-11-30 04:57:10

标签: android sqlite datetime timestamp

我在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' 

enter image description here

2 个答案:

答案 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:0007: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