Как извлечь только дату из datetime в T-Sql?

Я запускаю select против столбца datetime в SQL Server 2005. Я могу выбрать только дату из этого столбца datetime?

5 ответов


лучший способ-это:

   SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0) 

это потому, что внутри SQL Server хранит все даты как два целых числа, из которых первое-это ****количество дней*** с 1 января 1900 года. (второй-это часть времени, хранящаяся как количество секунд с полуночи. (секунд SmallDateTimes, или миллисекунды для DateTimes)
Использование вышеуказанного выражения лучше, потому что оно позволяет избежать всех преобразований, прямого чтения и доступа к этому первому целому числу во внутреннем представлении 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

вы можете использовать функции:

  1. day(date)
  2. month(date)
  3. year(date)

также может использоваться функция 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 переменную в запрос