我正在尝试在时间范围内过滤一个数据库。我写了下面这样的东西。
WHERE
CAST(DateTimeColumn AS TIME) BETWEEN CAST(@StartTime AS TIME)
AND CAST(@EndTime AS TIME)
这是正常工作的,但是当参数从时区转换时会出现问题。例如,我将默认时间设置为12:00 am到11:59 pm,以覆盖23:59小时的范围。当这些参数从新加坡时区转换为UTC时间时,它变成了04:00 pm到03:59 pm。因此,覆盖-1分钟的时间范围,或者在代码中它变成了。
WHERE
CAST(DateTimeColumn AS TIME) BETWEEN 04:00pm AND 03:59pm
上面的代码将不会返回任何内容,因为它搜索的是负时间范围。
我已经搜索并了解到我可以使用NOT BETWEEN
和CASE
来适应所有不同的时区。有没有更简单的方法来使其工作,而不必为每个可能的时区编写CASE语句?
1条答案
按热度按时间k10s72fa1#
这是你要找的吗?
1.如果
@StartTime
小于@EndTime
,则检查色谱柱时间是否介于@StartTime
和@EndTime
之间1.如果
@StartTime
大于@EndTime
,则检查色谱柱时间是否大于@StartTime
或小于@EndTime
。