我正在学习SQLite的工作,我试图从'Startdate'列中删除'Enddate'列,其中包含日期和时间。像这样的东西:
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'的价值。
如果你可以帮助我,我会非常感激。你真是太棒了!
答案 0 :(得分:0)
您获得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 |