为什么我的 JulianDay 在尝试获取两个日期之间的天数时返回 null
Why is my JulianDay returning null when trying to get number of days between two dates
你好我想在我的 tables arrivaldate
和 departuredate
之一中获取两个日期之间的天数但是我不知道为什么我的 JulianDay 返回空值.
Select Cast ((
JulianDay(datetime(departuredate)) - JulianDay(datetime(arrivaldate))) As Integer)
from booking;
我的table
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()
和 julianday()
仅适用于 'YYYY-MM-DD'
格式的日期或 'YYYY-MM-DD hh:mm:ss.sss'
.
格式的日期时间
您的日期包含 '/'
而不是 '-'
(仅在 arrivaldate
或 departuredate
中?)。
使用函数 replace()
:
SELECT CAST (
julianDay(REPLACE(departuredate, '/', '-')) -
julianDay(REPLACE(arrivaldate, '/', '-'))
AS integer
) AS days
FROM booking;
或者更好地更新 table 以便您的日期适合 SQLite 格式:
UPDATE booking
SET arrivaldate = REPLACE(arrivaldate, '/', '-'),
departuredate= REPLACE(departuredate, '/', '-')
然后你可以做:
SELECT CAST(julianDay(departuredate) - julianDay(arrivaldate) AS integer) AS days
FROM booking;
参见demo。
你好我想在我的 tables arrivaldate
和 departuredate
之一中获取两个日期之间的天数但是我不知道为什么我的 JulianDay 返回空值.
Select Cast ((
JulianDay(datetime(departuredate)) - JulianDay(datetime(arrivaldate))) As Integer)
from booking;
我的table
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()
和 julianday()
仅适用于 'YYYY-MM-DD'
格式的日期或 'YYYY-MM-DD hh:mm:ss.sss'
.
格式的日期时间
您的日期包含 '/'
而不是 '-'
(仅在 arrivaldate
或 departuredate
中?)。
使用函数 replace()
:
SELECT CAST (
julianDay(REPLACE(departuredate, '/', '-')) -
julianDay(REPLACE(arrivaldate, '/', '-'))
AS integer
) AS days
FROM booking;
或者更好地更新 table 以便您的日期适合 SQLite 格式:
UPDATE booking
SET arrivaldate = REPLACE(arrivaldate, '/', '-'),
departuredate= REPLACE(departuredate, '/', '-')
然后你可以做:
SELECT CAST(julianDay(departuredate) - julianDay(arrivaldate) AS integer) AS days
FROM booking;
参见demo。