Обновление даты часть поля datetime в последний день-в SQL
Я использую SQL Server 2005.
В одной из моих хранимых процедур у меня есть параметр @pstatDate
типа DateTime
.
Я должен просто обновить часть даты параметра до последнего дня этого месяца.
Например, если дата Apr 23 2012 2:15PM
мне нужно обновить ее до Apr 30 2012 2:15PM
Как я могу этого достичь.
2 ответа:
Может быть, что-то вроде этого:
DECLARE @Today DATETIME SET @Today=GETDATE() SELECT DATEADD(DAY,-DAY(DATEADD(MONTH,MONTH(@Today)+1,@Today)), DATEADD(MONTH,1,@Today))
Вы также можете сделать это следующим образом:
SELECT @Today+datediff(day, @Today, dateadd(month, 1, @Today))- DATEPART(day,@Today)
Как сказал @Aaron Bertrand:
Я бы поостерегся использовать неявную математику дат (@Today+...) потому что этот синтаксис не будет работать на новых типах данных (OP может в конечном итоге переместиться выключите SQL Server 2005 и соблазнитесь датой или DATETIME2, или другим читатели могут уже использовать дату и т. д.)
Итак, согласно этому, тогда что-то вроде этого:
SELECT DATEADD(DD,datediff(day, @Today, dateadd(month, 1, @Today))- DATEPART(day,@Today),@Today)