SQLITE查询以10分钟为间隔显示最后1小时

时间:2012-10-08 04:36:01

标签: sqlite

我已经搜索了一下,以10分钟的间隔获得最后1小时的详细信息,如下所示

如果假设当前时间是10:30,我期待输出如下,请提出解决方案。

  TIME_SLOT

09:31 - 09:40
09:41 - 09:50
09:51 - 10:00
10:01 - 10:10
10:11 - 10:20
10:21 - 10:30

我的表格格式为(CUSTOMER)(图1.1)

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3

如果我运行(SELECT strftime('%H:%M',结束,' - 9分钟')||' - '|| strftime('%H:%M',结束)AS time_slot FROM end_times)它给出了正确的输出(图1.2)

09:19 - 09:28
09:29 - 09:38
09:39 - 09:48
09:49 - 09:58
09:59 - 10:08
10:09 - 10:18 

你能指导如何映射这两个表,让我们说CUSTOMER表中的记录应该总结成人和成人_f列(图1.2到图1.1)

   ADULT    ADULT_F    TIME_SLOT
      5        8      09:19 - 09:28
      6       16      09:29 - 09:38
      0        0      09:39 - 09:48
      0        0      09:49 - 09:58
      0        0      09:59 - 10:08
      1        3      10:09 - 10:18 

请指导我一个解决方案,谢谢你的时间。

1 个答案:

答案 0 :(得分:2)

SQL查询旨在处理存储在表中的数据。 如果您想创建这些日期,最简单的方法就是将这些值插入临时表中。

或者,您可以逐个构造值。首先从当前时间定义偏移量:

CREATE VIEW intervals AS
SELECT -50 AS offset UNION ALL
SELECT -40           UNION ALL
SELECT -30           UNION ALL
SELECT -20           UNION ALL
SELECT -10           UNION ALL
SELECT   0

然后你可以像这样构建时隙端点:

CREATE VIEW end_times AS
SELECT datetime('now', offset || ' minutes') AS end
FROM intervals

然后格式化这样的时间段:

SELECT strftime('%H:%M', end, '-10 minutes') || ' - ' ||
       strftime('%H:%M', end               ) AS time_slot
FROM end_times