如何使用DATEADD函数实现指定时间点前后3分钟的区间查询?
时间范围校验脚本调整方案
你当前的逻辑只取了基准时间之后3分钟的区间,要同时覆盖基准点前后3分钟的范围,只需要给BETWEEN语句补充左边界的时间计算即可,两次调用DATEADD分别计算区间的起止时间。
最终可直接使用的查询逻辑
POS_DATAPOSICAO BETWEEN DATEADD(MINUTE, -3, @data) AND DATEADD(MINUTE, 3, @data)
写法说明
DATEADD的偏移量参数支持传入负数:传入-3时,会以@data为基准,往过去方向偏移3分钟,作为区间的左边界- 右边界保留原逻辑的偏移量
3,即往未来方向偏移3分钟,作为区间的右边界 - 两个边界组合后,覆盖的就是
@data时间点往前3分钟到往后3分钟的完整6分钟区间
补充提示:如果你的校验规则不包含刚好落在3分钟临界值的记录,可以把
BETWEEN写法替换为POS_DATAPOSICAO > DATEADD(MINUTE, -3, @data) AND POS_DATAPOSICAO < DATEADD(MINUTE, 3, @data),避免边界值判定不符合预期。
内容的提问来源于stack exchange,提问作者Lucas Renatto
相关产品推荐
相关产品推荐

