Две возможные причины, по которым вы получили 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 |