我需要非常類似的事情,從具體的日期,這是可能的SQL搜索中使用獲得一個月的日期範圍 - 這意味着不僅日期必須正確,而且如果在24小時系統中,時間必須從00:00:00到23:59:59,但它只是顯示DATETIME格式,它也可以在12小時系統上工作。
也許它會對某人有用。該解決方案基於Andomar的回答是:
-- Parameter date, which must be given to this code
DECLARE @date DATETIME
SET @date = GETDATE() -- for testing purposes initializing some date
-- Declare @from and to date range variables
DECLARE @from DATETIME
DECLARE @to DATETIME
-- This code line is based on Andomar's answer
SET @from = DATEADD(month,DATEDIFF(month, 0, @date),0)
-- Just simply to variable @from adds 1 month, minus 1 second
SET @to = DATEADD(second, -1, DATEADD(month, 1, @date))
-- Result
SELECT @from, @to
您將獲得類似結果2012年1月1日00:00:00 - 2012.01.31 23:59:59。
使用本月最後一天的一個問題是您需要確保'check_date'永遠不會晚於12點發生。如果可以的話,最好使用'check_date
dotjoe
@dotjoe - 我同意。我可以寫一篇白皮書,說明爲什麼要使用排他性的結束日期而不是包含結束日期。在這種情況下,最終會出現'> = 8月1日和<9月1日這樣做更容易......(注意:使用這種格式意味着如果該字段始終是DATE或者它可以是一個DATETIME,它可以在任何情況下工作...) – MatBailie