Округление даты и времени до начала текущего часа - PullRequest
0 голосов
/ 26 ноября 2018

Я бы хотел округлить дату и время (также должно вернуть дату) до начала часа, в который он включен, например:

2018-09-22 11:31:42.411 -> 2018-09-22 11:00:00.000
2018-09-22 11:08:02.456 -> 2018-09-22 11:00:00.000
2018-09-22 11:52:08.005 -> 2018-09-22 11:00:00.000

Может кто-нибудь помочь с этим, пожалуйста?

Ответы [ 4 ]

0 голосов
/ 26 ноября 2018

Это преобразует значение в строку, занимает 14 символов слева и добавляет значения 00:00:00

select  left(convert(varchar , datecol, 121),14) + '00:00:00'  as mydatecol from table
0 голосов
/ 26 ноября 2018

Предполагая, что тип данных DATETIME или DATETIME2, вы можете использовать этот общий прием:

SELECT DATEADD(HOUR, DATEDIFF(HOUR, 0, yourdate), 0)

DATEDIFF(HOUR, 0, yourdate) даст вам количество часов (и ничего больше) между нулевой датой иyourdate.Когда вы добавляете эти часы обратно к нулевой дате, вы переводите дату в час.

0 голосов
/ 26 ноября 2018

Вы можете использовать DATETIMEFROMPARTS() Функция.

select DATETIMEFROMPARTS(YEAR(@date),MONTH(@date),DAY(@date),DATEPART(HOUR,@date),00,00,00)

Здесь @date заменяется на YourColumn или любую переменную.

0 голосов
/ 26 ноября 2018

Другим методом является DATEADD, DATEDIFF:

SELECT DATEADD(HOUR, DATEDIFF(HOUR, '20000101',YourColumn),'20000101') AS RoundedValue
FROM YourTable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...