Я нашел много сообщений о округлении «вниз» значений времени (например, https://stackoverflow.com/a/6667041/468823),, но у меня есть другая проблема: я хочу округлить до более высокой минуты, а не до нижней, как я могу это сделать?
Мой код:
SELECT
PA.ORE AS TOT_HOURS,
CAST(CAST(PA.ORA_INIZIO AS DATETIME) AS TIME) AS BEGIN_TIME,
CAST(dateadd(minute, datediff(minute, 0, (CAST(PA.ORA_INIZIO AS DATETIME))), 0) AS TIME) AS BEGIN_TIME_ROUNDED
FROM PRG_ATTIVITA PA INNER JOIN PRG_TIPI_ATTIVITA PTA ON PA.ID_TIPO_ATTIVITA = PTA.ID_TIPO_ATTIVITA
INNER JOIN PER_ANAGRAFICA PAN ON PA.ID_DIPENDENTE = PAN.ID_DIPENDENTE
WHERE PA.ID_PROGETTO = 1431 and pta.DESCR_TIPO_ATTIVITA like 'F-%remoto%' and ID_ATTIVITA = 41772
ORDER BY PA.DATA_ATTIVITA
Мой результат следующий:
TOT_HOURS BEGIN_TIME BEGIN_TIME_ROUNDED
1.50 15:59:59.9970000 15:59:00.0000000
Я хочу BEGIN_TIME_ROUNDED = 16: 00: 00.0000000
ПРИМЕЧАНИЯ:
1. Я должен преобразовать свои данные {CAST (PA.ORA_INIZIO AS DATETIME)}, потому что в базе данных у меня есть данные времени в виде значений с плавающей запятой
2. BEGIN_TIME - это реальное значение моего времени после преобразования