Подтвердить что ты не робот

T-SQL, чтобы обрезать дату и время до ближайшей даты?

Дубликат Какой лучший способ удалить временную часть значения datetime (SQL Server)?

У меня есть столбец, который отслеживает, когда вещи создаются с использованием datetime, но я бы хотел создать отчет, который группирует их по дням, поэтому мне нужен способ обнуления компонента времени столбца datetime.

Как это сделать?

4b9b3361

Ответ 1

Один из способов - изменить getdate() на ваше имя столбца,

select dateadd(dd, datediff(dd, 0, getdate())+0, 0)

Ответ 2

Почему бы не конвертировать прямо сейчас:

select convert(date, getdate())

Это урезает дни, а не раунды. Чтобы круглые дни сделать это:

select convert(date, getdate() + 0.5)

Ответ 3

Здесь другое решение:

SELECT CAST( FLOOR( CAST( GETDATE() AS float) ) AS smalldatetime)

Ответ 4

Это простой способ получить дату (в виде строки) из datetime:

convert(varchar, <the date field/value/etc>, 101)

Но обратите внимание, что порядок в этом поле будет в алфавитном порядке, а не по дате, так как теперь это строка

Ответ 5

Да. Существует много форматов, поэтому я свяжусь с ним.

http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm

Если вы хотите отключить время, подобное сообщению, вы можете попробовать следующее:

select cast(convert(varchar, getdate(), 101) as datetime)

Ответ 6

declare @CurrentDate datetime
set @CurrentDate = dateadd(dd, datediff(dd, 0, getdate()), 0)

- или -

select dateadd(dd, datediff(dd, 0, MyDateColumn), 0) as DateOnly
from tblX

Ответ 7

В моих поисках я натолкнулся на следующее решение: он удаляет время только из UTC, но я нашел это интересным, поэтому я подумал, что и кто-то еще:

FUNCTION TrimDate(@dt AS DATETIME) RETURNS DATETIME
BEGIN
    RETURN CAST(CAST((@dt - 0.500000038580247) AS INT) AS DATETIME) 
END

Я бы предположил, что он работает быстро, поскольку все, что он делает, - это закругление и литье.

Ответ 8

Я просто делаю приведение (getdate() в качестве даты)