В SQL Server 2008 я хотел бы, чтобы столбец datetime округлялся до ближайшего часа и ближайшей минуты, предпочтительно с существующими функциями в 2008 году.
Для этого значения столбца 2007-09-22 15:07:38.850
вывод будет выглядеть так:
2007-09-22 15:08 -- nearest minute
2007-09-22 15 -- nearest hour
sql
sql-server
tsql
sql-server-2008
user219628
источник
источник
Ответы:
вернется
Вышеупомянутое просто усекает секунды и минуты, давая результаты, запрошенные в вопросе. Как отметил @OMG Ponies, если вы хотите округлить вверх / вниз, вы можете добавить полминуты или полчаса соответственно, а затем усечь:
и вы получите:
До того, как в SQL Server 2008 был добавлен тип данных date , я бы использовал вышеупомянутый метод, чтобы вырезать временную часть из datetime, чтобы получить только дату. Идея состоит в том, чтобы определить количество дней между рассматриваемым datetime и фиксированной точкой времени (
0
которая неявно приводится к1900-01-01 00:00:00.000
):а затем добавьте это количество дней к фиксированной точке времени, что даст вам исходную дату с установленным временем
00:00:00.000
:или более кратко:
Соответственно будет работать и использование другой части даты (например
hour
,mi
).источник
datetimeoffset
мне пришлось заменить0
на,TODATETIMEOFFSET('1900-01-01 00:00:00', 0)
чтобы избежать принудительного использования местного часового пояса в результате."Округлено" вниз, как в вашем примере. Это вернет значение даты varchar.
источник
CONVERT(datetime, CONVERT(VARCHAR(13), @date, 120)+':00:00')
Я понимаю, что это древний вопрос, и на него есть принятый и альтернативный ответ. Я также понимаю, что мой ответ ответит только на половину вопроса, но для тех, кто хочет округлить до ближайшей минуты и по-прежнему иметь значение, совместимое с датой и временем, используя только одну функцию :
В течение нескольких часов или секунд используйте ответ Джеффа Огаты (принятый ответ) выше.
источник
smalldatetime
Select convert(char(8), DATEADD(MINUTE, DATEDIFF(MINUTE, 0, getdate), 0), 108) as Time
округляет секунды до 00
источник