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;