如何检查可选日期范围是否在可选日期范围之间
How to check if optional date range is between optional date range
我在编写查询以检查每次交付是否在项目的日期范围内时遇到问题。
我查看了 this question 但我的日期范围不一定结束,在这种情况下 endDate 为空。
我的项目和交付 table 都包含一个开始日期和一个带有约束的结束日期,以确保结束日期为空或晚于开始日期。
这是我的 select:
SELECT *
FROM Projet
INNER JOIN Delivery ON Delivery.ProjetId = Projet.ProjetId
我试过使用 BETWEEN
但由于可能 NULL
我错过了任何正在进行的项目。
WHERE Delivery.startDate BETWEEN Projet.startDate AND Projet.endDate
您的查询应如下所示:
SELECT *
FROM Projet p
INNER JOIN Delivery d ON d.ProjetId = p.ProjetId
WHERE d.startDate >= p.startDate
AND (p.endDate is null
OR p.endDate is not null
AND (d.endDate is null OR d.endDate <= p.endDate)
)
我在编写查询以检查每次交付是否在项目的日期范围内时遇到问题。 我查看了 this question 但我的日期范围不一定结束,在这种情况下 endDate 为空。
我的项目和交付 table 都包含一个开始日期和一个带有约束的结束日期,以确保结束日期为空或晚于开始日期。
这是我的 select:
SELECT *
FROM Projet
INNER JOIN Delivery ON Delivery.ProjetId = Projet.ProjetId
我试过使用 BETWEEN
但由于可能 NULL
我错过了任何正在进行的项目。
WHERE Delivery.startDate BETWEEN Projet.startDate AND Projet.endDate
您的查询应如下所示:
SELECT *
FROM Projet p
INNER JOIN Delivery d ON d.ProjetId = p.ProjetId
WHERE d.startDate >= p.startDate
AND (p.endDate is null
OR p.endDate is not null
AND (d.endDate is null OR d.endDate <= p.endDate)
)