sql - 如何在 SQLite 中用 datetime 减去两列?
问题描述
我正在为工作学习 SQLite,我正在尝试从包含日期和时间的“开始日期”列中减去“结束日期”列。像这样的东西:
Startdate 3/15/18 16:00 3/28/18 17:00
Enddate 3/19/18 00:00 3/20/18 00:00
我的表的名称是 data1。我试过这个:
select *,
strftime('%m/%d/%y %H:%M', 'data1.Enddate') -
(strftime('%m/%d/%y %H:%M', 'data1.Startdate')) as TimeOff
from data1;
但这给了我所有的“空”值。
如果你能帮我解决这个问题,我将不胜感激。你这么多!
解决方案
您得到的两个可能原因NULL
(可能是因为静默错误):1)您的日期在创建时格式不正确。它们应该是yyyy-mm-dd HH:MM:SS
格式。2) 在您的一个查询中没有结束分号。我在上面看到了它,但是如果您插入测试行的那个没有正确关闭,您可能不会
我的测试查询:
https://dbfiddle.uk/?rdbms=sqlite_3.8&fiddle=8b9a168291bbc08c74a895ce22ab41ac
设置
CREATE TABLE data1 (foo int, StartDate datetime, EndDate datetime) ;
INSERT INTO data1 (foo, StartDate, EndDate)
VALUES (1,'2018-03-15 16:00:00', '2018-03-28 17:00:00')
, (2,'2018-03-19 00:00:00', '2018-03-20 00:00:00') ;
查询
SELECT foo, StartDate, EndDate
, julianday(EndDate)-julianday(StartDate) AS TimeOffInDays
, CAST((julianday(EndDate) - julianday(StartDate))*24 AS real) AS TimeOffInHours
FROM data1 ;
这给了我们...
| foo | StartDate | EndDate | TimeOffInDays | TimeOffInHours |
=========================================================================================
| 1 | 2018-03-15 16:00:00 | 2018-03-28 17:00:00 | 13.041666666977 | 313.00000000745 |
| 2 | 2018-03-19 00:00:00 | 2018-03-20 00:00:00 | 1 | 24 |
推荐阅读
- python - pyqt5 - 单击 QComboBox 时连接一个函数
- python - Conda 创建一个仅安装 jupyter 的环境 py3.7,但发现冲突
- date - 使用 GMT 格式的时刻解析日期
- javascript - 如果图像未找到或损坏,则 JavaScript OnError
- r - 如何在 R 中读取不带引号的 CSV 文件?
- java - 是什么使对象字段自动更改?
- unity3d - Unity 3d 主相机 LookAt 不在 x 轴上旋转
- javascript - 我有一个 Range 输入来更改颜色,但它不起作用
- docker - Docker --cpus 使用 cpu 内核或处理器来限制使用?
- git - 使用 go-git 克隆存储库后读取文件