SQL Server - 检查给定的日期+时间是否在两个日期时间变量之间的确切日期+时间

我在数据库表中有两个日期时间列:@Start 和@End。

两列都包含日期和时间,例如:

@Start: 2018-10-01 19:00:00
@End: 2018-10-10 23:59:00

考虑到日期和时间,我想知道当前日期是否恰好在两个日期时间之间。

因此,2018-10-08 16:372018-10-10 23:59:00 将匹配此范围 而 2018-10-11 00:00:00 则不会。 (在这种情况下,此日期比结束日期晚一分钟,因此它不在我的日期时间范围内)。

SELECT Id FROM Table1 WHERE GETDATE() BETWEEN Start AND End

我不在实际代码中使用 GETDATE(),我使用一个参数。问题是当前日期参数可能包含秒和毫秒,如 23:59:59.123。我的代码将此类日期视为不符合给定范围。但我不关心 s/ms。

有解决办法吗?

更新:

我想要达到的精度分钟。所以我什至不需要考虑秒数或毫秒数。我将使用的日期时间格式为“yyyy-MM-dd hh-mm”,但我不知道如何使用 BETWEEN 子句将开始和结束转换为显示的格式,以便我可以比较日期。

最佳答案

你似乎想要这个逻辑:

WHERE GETDATE() >= Start
  AND GETDATE() < DATEADD(minute, 1, End)

假设End的时间部分是23:59:00它涵盖了 23:59:00 之间的所有可能值和 23:59:59.999...999 .

https://stackoverflow.com/questions/52703745/

相关文章:

amazon-web-services - 提供的证书不是有效的自签名证书。请提供有效的自签名证书或

xcode - 如何解决错误 'app' 的配置设置冲突。 "app"已自动签名,

spring - 在 Spring RestTemplate 中设置 Authorization h

html - ng服务一次时如何防止自动重新加载页面?

amazon-web-services - AWS Api Gateway作为HTTP代理正在破坏二

fonts - Webstorm with Java 1.8,字体粗细改变

xpages - 适用于 Domino Designer V10 的 Openntf Domino

amazon-web-services - AWS EKS 添加受限于命名空间的用户

正则表达式 - 反向引用 - 单词定界符?

java-8 - 坚持使用 Java 8 流