database - 同一列中 2 个日期时间元素的 SQL LITE 差异
问题描述
我是 SQL lite 的新手,我有一个这种格式的日期时间列:
ID | 约会时间 |
---|---|
1 | 2020-12-26 19:08:49 |
2 | 2020-12-26 19:08:50 |
3 | 2020-12-26 19:08:51 |
4 | 2020-12-26 19:08:51 |
5 | 2020-12-26 19:09:07 |
6 | 2020-12-26 19:11:45 |
7 | 2020-12-26 19:52:49 |
8 | 2020-12-26 19:52:50 |
我如何计算第一个元素与第二个第三个元素与第四个元素之间的差异?
解决方案
使用窗口函数FIRST_VALUE()
获取第一行的日期时间,使用该函数strftime()
可以计算每行的差异:
SELECT *
FROM (
SELECT id,
strftime('%s', datetime) - strftime('%s', FIRST_VALUE(datetime) OVER (ORDER BY id)) AS diff_in_secs
FROM tablename
)
WHERE id > 1
或自加入:
SELECT t.id,
strftime('%s', t.datetime) - strftime('%s', m.datetime)
FROM tablename t
INNER JOIN (SELECT * FROM tablename ORDER BY id LIMIT 1) m
ON m.id < t.id
我使用id
anddatetime
作为列名和tablename
表名,您可以将它们更改为实际名称。
见演示。
结果:
> id | diff_in_secs
> -: | -----------:
> 2 | 1
> 3 | 2
> 4 | 2
> 5 | 18
> 6 | 176
> 7 | 2640
> 8 | 2641
推荐阅读
- sql-server - 工具箱中的项目是灰色的 - 如何启用它们?
- python - 如何在嵌套列表中做多个向量点积?
- javascript - Django - 从 JSON 对象中选择多个条目以显示在下一页上
- css - 如何删除 PrimeNG 下拉图标?
- sql - SQL搜索以获取具有相同用户ID的每个唯一单个/组条目中的最后一个值?条目可以出现在数据集中的不同位置
- mysql - ERROR 1140 (42000) groupby 聚合查询?
- python - 检查 pandas 中的重复数据
- github - Github 页面未显示加载的 Angular 应用程序
- python-3.x - 如何通过 kivy android 应用程序在我的 android 文件管理器中创建文件夹
- javascript - Fire window.open 从警报弹出窗口