Как извлечь только дату из datetime в T-Sql?
Я запускаю select против столбца datetime в SQL Server 2005. Я могу выбрать только дату из этого столбца datetime?
5 ответов
лучший способ-это:
SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0)
это потому, что внутри SQL Server хранит все даты как два целых числа, из которых первое-это ****количество дней*** с 1 января 1900 года. (второй-это часть времени, хранящаяся как количество секунд с полуночи. (секунд SmallDateTime
s, или миллисекунды для DateTime
s)
Использование вышеуказанного выражения лучше, потому что оно позволяет избежать всех преобразований, прямого чтения и доступа к этому первому целому числу во внутреннем представлении dates без необходимости выполнять какую-либо обработку... два нуля в приведенном выше выражении (которые представляют 1 января 1900) также непосредственно используются без обработки или преобразования, поскольку они соответствуют внутреннему представлению SQL server даты 1 января 1900 точно так же, как представлено (как целое число)..
*Примечание. На самом деле, количество границ даты (полуночи), которые вы должны пересечь, чтобы перейти от одной даты к другой.
Да, используя функцию convert. Например:
select getdate(), convert(varchar(10),getdate(),120)
результаты:
----------------------- ----------
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 переменную в запрос