Мне нужна была очень похожая вещь, чтобы получить диапазон дат месяца с определенной датой, который можно было использовать в поиске SQL - это означает, что не только даты должны быть правильными, но время должно быть с 00:00:00 до 23:59: 59 Если в 24-часовой системе, но это просто вопрос отображения формата 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.01.01 00:00:00 - 2012.01.31 23: 59: 59 .