Sqlite 为什么我的JulianDay在尝试获取两个日期之间的天数时返回null

Sqlite 为什么我的JulianDay在尝试获取两个日期之间的天数时返回null,sqlite,datetime,julian-date,Sqlite,Datetime,Julian Date,您好,我正在尝试在我的一个表中获取两个日期之间的天数arrivaldate和departuredate,但是我不知道为什么我的JulianDay返回空值 Select Cast (( JulianDay(datetime(departuredate)) - JulianDay(datetime(arrivaldate))) As Integer) from booking; 我的桌子 CREATE table Booking( BookingID INTEGER PRIMARY KEY

您好,我正在尝试在我的一个表中获取两个日期之间的天数
arrivaldate
departuredate
,但是我不知道为什么我的JulianDay返回空值

Select Cast ((
JulianDay(datetime(departuredate)) - JulianDay(datetime(arrivaldate))) As Integer) 
from booking;
我的桌子

CREATE table Booking(
  BookingID INTEGER PRIMARY KEY autoincrement, 
  BCustomerID INTEGER NOT NULL, 
  arrivaldate VARCHAR(10) NULL, 
  departuredate VARCHAR(10) NULL, 
  paymentmethod VARCHAR (45)NULL, 
  RoomType VARCHAR (20)
);

INSERT INTO Booking(BCustomerID,arrivaldate,departuredate,paymentmethod,RoomType) VALUES 
(1,'2018/07/02','2018-07-10','Card','Single'), 
(2,'2018/07/12','2018-07-18','Cash','Double'), 
(3,'2018/07/12','2018-07-19','Cash','Single'), 
(4,'2018/07/06','2018-07-07','Card','Double'), 
(5,'2018/08/14','2018-08-24','Card','Triple'), 
(6,'2018/09/01','2018-09-04','Cash', 'Quad');

SQLite的datetime函数,如
datetime()
julianday()
仅适用于格式为
'YYYY-MM-DD'
的日期或格式为
'yyyyy-MM-DD hh:MM:ss.sss'的日期时间
您的日期包含
'/'
而不是
'-'
(仅在
arrivaldate
departuredate
中) 使用函数
replace()

或者最好更新表格,使日期具有适当的SQLite格式:

UPDATE booking
SET arrivaldate = REPLACE(arrivaldate, '/', '-'),
    departuredate= REPLACE(departuredate, '/', '-')
然后你可以做:

SELECT CAST(julianDay(departuredate) - julianDay(arrivaldate) AS integer) AS days
FROM booking;

请参阅。

非常感谢,我刚刚想起我为我的项目更改了其中一个的格式
SELECT CAST(julianDay(departuredate) - julianDay(arrivaldate) AS integer) AS days
FROM booking;