SQL日期过滤器:当开始日期=结束日期

时间:2020-11-09 05:55:28

标签: sql sql-server tsql between

从HTML输入中给

:startDate和:endDate值,并将其作为参数传递给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部分返回与两个输入框中输入的日期值相同的任何通知。 预期输出如下所示: startDate = 10/10/2020 endDate = 10/10/2020

返回日期值为10/10/2020的所有通知

1 个答案:

答案 0 :(得分:0)

您在说:

查询仅适用于BETWEEN语句。

这是正确的,因为BETWEEN具有包含范围的含义

date BETWEEN :startDate AND :endDate

与以下相同:

date >= :startDate AND date <= :endDate

这就是为什么您的OR条件不需要的原因:

OR CONVERT (datetime, date) = :startDate