寻找可以检索两次时差的查询。以下是示例:
EmpID EmpOnTime EmpOffTime
1 2:45 3:00
2 1:00 4:00
3 1:35 2:55
4 2:45 3:20
结果应该是:
For EmpID 1 Time diffrence: 0:15
For EmpID 2 Time diffrence: 3:00
For EmpID 3 Time diffrence: 1:20
For EmpID 4 Time diffrence: 0:35
我使用以下查询给出了错误的结果 查询:
select offTime, onTime, (strftime('%s',offTime) - strftime('%s',onTime)) / 60 AS diffrence
from emplyoee;
答案 0 :(得分:2)
这个比最初的想法更棘手。这是您需要的SQL,但是您的输入数据需要采用不同的格式才能使其正常工作。
select EmpId,
offTime,
onTime,
time(((strftime('%s', offTime) - strftime('%s', onTime)) / 60), 'unixepoch') as difference
from employee;
我必须将数据存储在YYYY-MM-DD HH:MM:SS:
2019-07-18 03:00:00
否则,如果你的意思是am或pm,则SQLite会感到困惑,并且%s无法计算,因为它返回自1970-01-01以来的秒数。
答案 1 :(得分:0)
我认为你可以使用它:
SELECT
EmpID,
time(
julianday("2000-01-01 00:00:00") +
julianday(substr("0" || EmpOffTime || ":00", 1, 8)) -
julianday(substr("0" || EmpOnTime || ":00", 1, 8))) As diff
FROM
yourTable
<强> [SQL Fiddle Demo
] 强>
您的时间需要在最后使用:00
完成,有时在0
处开始使用substr("0" || yourTime || ":00", 1, 8)
处理,然后使用julianday()
您可以找到两个日期的差异,我也将julianday("2000-01-01 00:00:00")
添加到差异中以获得有效的时间值等等。