Я выполняю выбор против столбца даты и времени в SQL Server 2005. Я могу выбрать только дату из этого столбца даты и времени?
Лучший способ:
SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0)
Это связано с тем, что внутри SQL Server все даты хранятся в виде двух целых чисел, первое из которых представляет собой **** количество дней *** с 1 января 1900 г. (второе число - временной отрезок, сохраненный как количество секунд после полуночи (секунды для SmallDateTime
с или миллисекунды для DateTime
с)
Использование приведенного выше выражения лучше, потому что оно позволяет избежать всех преобразований, прямого чтения и доступа к этому первому целому числу во внутреннем представлении дат без необходимости выполнять какую-либо обработку ... два нуля в приведенном выше выражении (которые представляют 1 января 1900 г.) также являются напрямую используются без обработки или преобразования, поскольку они соответствуют внутреннему представлению даты 1 января 1900 года в SQL-сервере точно так, как оно представлено (как целое число) ..
* ПРИМЕЧАНИЕ. Фактически, количество границ дат (полуночи), которое вы должны пересечь, чтобы перейти от одной даты к другой.
Вы можете использовать функции:
день (дата)
месяц (дата)
год (дата)
Да, с помощью функции convert. For example:
select getdate(), convert(varchar(10),getdate(),120)
RESULTS:
----------------------- ----------
2010-05-21 13:43:23.117 2010-05-21
Также может пригодиться функция Datepart ():
http://msdn.microsoft.com/en-us/library/ms174420 (SQL.90) .aspx
DECLARE @dToday DATETIME
SET @dToday = CONVERT(nvarchar(20), GETDATE(), 101)
SELECT @dToday AS Today
Возвращает сегодняшнюю дату в 12:00: '2010-05-21 00: 00: 00.000' Затем вы можете использовать переменную @dToday в запросе по мере необходимости