计算SQLite中的时间差
在我的数据中,表格如下所示: 周日| 10:00-22:00 周六| 10:00-22:00 周一| 10:00-19:00 周二| 10:00-18:00 周五| 10:00-19:00 我不知道如何计算时间差 我需要知道每个人的持续时间。谢谢计算SQLite中的时间差,sql,sqlite,time,Sql,Sqlite,Time,在我的数据中,表格如下所示: 周日| 10:00-22:00 周六| 10:00-22:00 周一| 10:00-19:00 周二| 10:00-18:00 周五| 10:00-19:00 我不知道如何计算时间差 我需要知道每个人的持续时间。谢谢 或者给我一个提示,这完全可以。您可能需要使用两个函数instr、substr和julianday,才能获得所需的功能 表格 假设您的桌子看起来像这样: create table test (day, timespan); insert into tes
或者给我一个提示,这完全可以。您可能需要使用两个函数
instr
、substr
和julianday
,才能获得所需的功能
表格
假设您的桌子看起来像这样:
create table test (day, timespan);
insert into test values ('Sunday', '10:00-22:00');
insert into test values ('Saturday', '10:00-22:00');
insert into test values ('Monday' , '10:00-19:00');
insert into test values ('Tuesday', '10:00-18:00');
insert into test values ('Friday', '10:00-19:00');
查询
运行以下查询,以小时为单位提供时间
select
day,
timespan,
round( 24 * (
julianday('2000-01-01 ' || substr(timespan, instr(timespan, '-')+1, 10) || ':00') -
julianday('2000-01-01 ' || substr(timespan, 1, instr(timespan, '-')-1) || ':00')
), 1) as hrs
from test;
结果
day timespan hours
---------- ----------- ----------
Sunday 10:00-22:00 12.0
Saturday 10:00-22:00 12.0
Monday 10:00-19:00 9.0
Tuesday 10:00-18:00 8.0
Friday 10:00-19:00 9.0
解释
如果您的时间存储在如下列中:10:00-22:00
,那么我们应该将开始时间和结束时间分开。为此,我们使用instr
查找-
的位置。例如,instr('10:00-22:00','-')
将为您提供6。这意味着-
处于第6位
知道破折号在哪里,我们可以通过从开始到破折号提取字符来找到开始时间。我们可以通过获取从破折号开始到字符串末尾的字符来获取结束日期。我只是选择在破折号后使用substr
获取10个字符
因为我们只有一个时间和一个日期,所以我创建了一个虚构的日期2000-01-01,并在它前面添加了开始时间来创建开始日期/时间。我对结束日期也做了同样的事情
julianday
的开始日期和结束日期为我们提供了自某一天以来经过的天数,这恰好是美国独立宣言日。因此,从开始日期的julianday中减去结束日期的julianday将得到天数。将其乘以24小时。您是否将数据存储在如下列中:10:00-22:00
?