我正在嘗試在時間范圍內過濾資料庫。我在下面寫了這樣的東西。
WHERE
CAST(DateTimeColumn AS TIME) BETWEEN CAST(@StartTime AS TIME)
AND CAST(@EndTime AS TIME)
這可以正常作業,但是從時區更改轉換引數時會出現問題。例如,我已將默認時間設定為上午 12:00 到晚上 11:59,以涵蓋 23:59 小時的范圍。當這些引數從新加坡時區更改為 UTC 時間時,它變為 04:00pm 到 03:59pm。因此,覆寫 -1 分鐘的時間范圍或在代碼中變為。
WHERE
CAST(DateTimeColumn AS TIME) BETWEEN 04:00pm AND 03:59pm
上面的代碼不會回傳任何內容,因為它搜索了負時間范圍。
我已經搜索并了解到我可以使用NOT BETWEEN并CASE適應所有不同的時區。有沒有一種更簡單的方法可以在不為每個可能的時區撰寫 CASE 陳述句的情況下完成這項作業?
uj5u.com熱心網友回復:
這是你想要的?
如果
@StartTime小于然后@EndTime檢查您的列時間是否在@StartTime和之間@EndTime如果
@StartTime大于,@EndTime則檢查您的列時間是大于@StartTime還是小于您的@EndTime.
(@StartTime < @EndTime AND CAST(DateTimeColumn AS TIME) BETWEEN @StartTime AND @EndTime)
OR (@StartTime > @EndTime AND (CAST(DateTimeColumn AS TIME) >= @StartTime OR CAST(DateTimeColumn AS TIME) <= @EndTime))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/517916.html
標籤:sqlsql服务器
下一篇:Powershell添加到哈希表
