【发布时间】:2012-03-05 16:15:39
【问题描述】:
我发现了很多关于“向下”时间值四舍五入的帖子(例如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是我的时间值转换后的真实值
【问题讨论】:
标签: sql sql-server-2008 tsql rounding sqldatetime