在日期范围内的一天中显示记录

时间:2015-12-15 16:54:32

标签: sql sql-server tsql

我觉得我对这个人很愚蠢,明天睡觉和喝咖啡后甚至可能会来找我

我想使用参数将日期范围内的记录过滤到夜班或白班,白班参数工作正常,但是当我跨越两天时,我不能完全绕过夜班一个(轮班时间是从下午6点到凌晨5点。

这是我目前所拥有的,不会显示“夜晚”的任何记录......我明白为什么它没有,但我无法思考它是怎么回事应写成:)

AND
(
(@shift = 'Nights' AND DATEPART(hh,[PostingDate]) >= 17 AND DATEPART(hh,[PostingDate]) <= 6)
or (@shift = 'Days' AND DATEPART(hh,[PostingDate]) >= 6 AND DATEPART(hh,[PostingDate]) <= 17)
)

1 个答案:

答案 0 :(得分:1)

对于任何给定的行,

Datepart(HH, PostingDate)始终是相同的值,因此它永远不会同时为&gt; = 17和&lt; = 6.您可能希望使用OR或{{ 1}}

例如:

NOT BETWEEN.