Обычно мне нужно удалить информацию о времени из GETDATE()
. Мне это нужно, потому что у меня есть несколько полей DateTime, где я знаю, что храню только информацию о дате, поэтому для надежного сравнения (MyDate < GETDATE()
) мне нужно удалить информацию о времени из GETDATE()
). Конечно, я могу использовать тип данных DATE
в MyDate
, но это нормально для новых приложений, а не для старых.
Раньше я делал это с CAST
, но, поскольку в SQL Server 2008 также есть тип данных DATE
, он кажется более читабельным.
Старый подход
DECLARE @Today DateTime
SET @Today = (CAST(FLOOR(CAST( GETDATE() AS FLOAT)) AS DATETIME))
select @Today
Новый подход
DECLARE @TodayDate Date
Set @TodayDate = GETDATE()
select @TodayDate
Могу ли я пойти со вторым или есть какие-то предостережения? (из coruse я использую только 2008!)