SELECT DATEADD(MINUTE, CEILING(DATEDIFF(SECOND, 0, CAST(CAST(PA.ORA_INIZIO AS DATETIME) AS TIME)) / 60.0), DATEDIFF(DAY, 0, PA.ORA_INIZIO)) AS BEGIN_TIME_ROUNDED
संपादित करें
जैसा कि एक टिप्पणी में बताया गया है यह 0 और 1 सेकंड के बीच के समय में विफल रहता है। इसे केवल सेकंड से मिलीसेकंड में सीलिंग में सटीकता को बदलकर मुकाबला किया जा सकता है:
SELECT PA.ORA_INIZIO,
DATEADD(MINUTE,
CEILING(DATEDIFF(MILLISECOND, 0, CAST(PA.ORA_INIZIO AS TIME)) / 60000.0),
DATEDIFF(DAY, 0, PA.ORA_INIZIO)) AS BEGIN_TIME_ROUNDED
FROM (VALUES
(CONVERT(DATETIME, '20211126 15:59:00.997')),
(CONVERT(DATETIME, '20211126 15:59:00.004'))
) AS PA (ORA_INIZIO);
जो देता है:
ORA_INIZIO | BEGIN_TIME_ROUNDED |
---|---|
2021-11-26 15:59:59.97 | 2021-11-26 16:00:00.000 |
2021-11-26 15:59:00.003 | 2021-11-26 16:00:00.000 |