Как удалить часть времени из значения datetime (SQL Server)?

Я не знаю, зачем вам это нужно, но вы можете попытаться разделить свое выражение на 2 строки и связать их позже. Вы уверены, что нет другого способа проверить ваш ввод? Как уже существующая библиотека или что-то в этом роде.

81
задан Ellis 1 March 2016 в 14:49
поделиться

3 ответа

Itzik Ben-Gan в Вычисления ДАТЫ И ВРЕМЕНИ, Часть 1 (Журнал SQL Server, февраль 2007) показывает три метода выполнения такого преобразования ( самый медленный к самому быстрому ; разница между вторым и третьим методом является небольшой):

SELECT CAST(CONVERT(char(8), GETDATE(), 112) AS datetime)

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

SELECT CAST(CAST(GETDATE() - 0.50000004 AS int) AS datetime)

Ваша техника (бросающий к плавание ) предлагается читателем в апрельском выпуске журнала. По его словам, это имеет производительность, сопоставимую с производительностью второй техники, представленной выше.

18
ответ дан Marek Grzenkowicz 2 March 2016 в 00:49
поделиться

SQL Server 2008 имеет новое дата тип данных и это упрощает эту проблему до:

SELECT CAST(CAST(GETDATE() AS date) AS datetime)
30
ответ дан Marek Grzenkowicz 2 March 2016 в 00:49
поделиться

Ваш CAST - FLOOR - CAST уже, кажется, оптимальный путь, по крайней мере, на SQL Server MS 2005.

Некоторые другие решения, которые я видел, имеют преобразование строк, как Select Convert(varchar(11), getdate(),101) в них, который медленнее фактором 10.

12
ответ дан mattytommo 2 March 2016 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: