我發現了很多關於舍入「down」時間值的帖子(例如https://stackoverflow.com/a/6667041/468823),但我還有另一個問題:我想繞到較高的分鐘而不是較低的分鐘,我能怎麼做?SQL Server - Round TIME值到下一分鐘
我的代碼:
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是我轉換後的時間值的真實值
非常好!非常感謝! – 2012-02-14 09:54:02