在 ORACLEDATEDIFF
中不存在。
但在 Oracle 中,您可以直接在两个日期之间使用+或-操作数。
所以你的请求可能是:(编辑在选择中添加差异值)
SELECT b.BOOKINGID, g.FORENAME, g.SURNAME,
CASE WHEN (SYSDATE - b.DEPARTDATE) > 0 THEN CONCAT((SYSDATE - b.DEPARTDATE), ' days late')
ELSE CONCAT((b.DEPARTDATE - SYSDATE),' days left')
END AS "Booking Status"
FROM GUEST g, BOOKING b
WHERE g.GUESTID = b.GUESTID
AND (SYSDATE - b.DEPARTDATE) > 2;
此查询仅显示至少迟到 2 天的预订。
编辑
您正在寻找的查询是:(与Gordon Linoff所做的几乎相同)
SELECT b.BOOKINGID, g.FORENAME, g.SURNAME, (b.DEPARTDATE - b.ARRIVEDATE) as booking_duration
FROM GUEST g, BOOKING b
WHERE g.GUESTID = b.GUESTID
AND (b.DEPARTDATE - b.ARRIVEDATE) > 2;