SQL日期筛选器:当开始日期=结束日期时返回结果



:startDate和:endDate是从html输入中给定的值,并通过AJAX作为参数传递。我想在:startDate和:endDate之间返回通知,但如果startDate等于endDate,也要返回通知。(用户为两个输入框输入相同的日期(。

SELECT  name, FK_userID, subject, messageText, recipients, 
CONVERT     (varchar, date) as date 
FROM        notifications
LEFT JOIN   users ON users.userID = 
notifications.FK_userID
WHERE       date
BETWEEN     :startDate AND :endDate
OR          CONVERT (datetime, date) = :startDate
ORDER BY    CONVERT (datetime, date, 100) desc

OR语句中断第一个条件。该查询仅适用于BETWEEN语句。如果用户为startDate和endDate输入相同的日期值,我希望查询的OR部分返回与在两个输入框中输入的日期值相同的任何通知。预期输出如下所示:开始日期=2020年10月10日结束日期=2020年10月10日

返回日期值为2020年10月10日的任何通知

您说的是:

查询仅适用于BETWEEN语句。

这是真的,因为BETWEEN具有包含范围,这意味着

date BETWEEN :startDate AND :endDate

与相同

date >= :startDate AND date <= :endDate

这就是为什么你的OR条件不需要

OR CONVERT (datetime, date) = :startDate

最新更新