Дата Время в SQL Server 2005 - PullRequest
3 голосов
/ 16 мая 2011

У меня в таблице есть столбец даты и времени, в котором есть компонент времени.

Можно ли в любом случае установить '2011-03-14 11:46:31' на '2011-03-14 00:00:00' ?

Ответы [ 4 ]

2 голосов
/ 16 мая 2011

До 2к8 я всегда;

DATEADD(DAY, DATEDIFF(DAY, 0, datecol), 0) 
2 голосов
/ 16 мая 2011
declare @date as datetime

set @date = getdate()

Select  Cast(Floor(Cast(@date as float)) as DateTime)
1 голос
/ 17 мая 2011

Поскольку все предыдущие ответы одинаковы, я добавлю другой "хороший" вариант, о котором я знаю:

SELECT DateAdd(Day, 0, DateDiff(Day, 0, GetDate()))

Некоторые / многие предпочитают его, потому что он не основывается на недокументированном / неподдерживаемом факте, что дни представлены целыми числами в DateTime / SmallDateTime.

Были интересные дискуссии по этой теме на форумах SqlServerCentral.com, но я не смог быстро найти ссылку, извините.

ОБНОВЛЕНИЕ: Гейл Шоу опубликовала приятное быстрое сравнение производительности распространенных методов (этот метод, очевидно, самый быстрый, но только с небольшим количеством v): http://sqlinthewild.co.za/index.php/2008/09/04/comparing-date-truncations/

0 голосов
/ 16 мая 2011

Альтернатива, которая делает то же самое, в зависимости от того, где вы ее используете.Это также можно использовать в представлении и т. Д., Где полный сценарий невозможен.

SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, GETDATE())))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...