Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算SQLite中的时间差_Sql_Sqlite_Time - Fatal编程技术网

计算SQLite中的时间差

计算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

在我的数据中,表格如下所示:

周日| 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 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