SQL日期筛选器:开始日期=结束日期时返回结果
:startDate和:endDate是html输入中给定的值,并通过AJAX作为参数传递。我希望返回介于:startDate和:endDate之间的通知,但如果startDate等于endDate,也会返回通知。(用户为两个输入框输入相同的日期) OR语句破坏了第一个条件。查询只处理BEVERY语句。如果用户为startDate和endDate输入相同的日期值,我希望查询的或部分返回与在两个输入框中输入的日期值相同的任何通知。 预期输出如下所示: 起始日期=2020年10月10日 截止日期=2020年10月10日 返回日期值为2020年10月10日的所有通知 查询只处理BEVERY语句 这是真的,因为包含范围意味着SQL日期筛选器:开始日期=结束日期时返回结果,sql,sql-server,tsql,between,Sql,Sql Server,Tsql,Between,:startDate和:endDate是html输入中给定的值,并通过AJAX作为参数传递。我希望返回介于:startDate和:endDate之间的通知,但如果startDate等于endDate,也会返回通知。(用户为两个输入框输入相同的日期) OR语句破坏了第一个条件。查询只处理BEVERY语句。如果用户为startDate和endDate输入相同的日期值,我希望查询的或部分返回与在两个输入框中输入的日期值相同的任何通知。 预期输出如下所示: 起始日期=2020年10月10日 截止日期=2
date BETWEEN :startDate AND :endDate
同:
date >= :startDate AND date <= :endDate
那么,您的查询不起作用怎么办?考虑将一些示例数据和预期结果显示为格式化文本。<代码>日期<代码>的数据类型是什么?
BETWEEN
是包含的-属于BETWEEN
中任一表达式的值都将包含在内。我不理解这个问题。您编写的查询只使用BETWEEN语句,这意味着您不需要除此之外的任何东西,但是您添加了CONVERT
语句,该语句可以中断内容。删除CONVERT
,您已经回答了自己的问题。日期的数据类型是datetime。如果用户同时为startDate和endDate输入2020年10月20日,则不会返回日期为2020年10月20日的任何行,因为它不在这些值之间。如果startDate和endDate相等,并且有一行具有该值,我将尝试包含结果。
date >= :startDate AND date <= :endDate
OR CONVERT (datetime, date) = :startDate