[英]Round time(7) column values no nearest 15 minutes
我有類型time(7)[允許空值]的列,有些值需要調整到最接近的15分鍾標記,秒數設置為零。
例:
09:00:40.0000000 -> 09:00:00.0000000
12:50:00.0000000 -> 12:45:00.0000000
12:59:37.0000000 -> 13:00:00.0000000
嘗試這個-
SELECT
CAST
(
DATEADD(MINUTE, ROUND(DATEDIFF(MINUTE, 0,
CAST('2015-11-24 ' -- Add any day for converting to DateTime
+LEFT('09:00:40.0000000',LEN('09:00:40.0000000') - 4) -- Removing last four zero from your data to convert to date time
AS DATETIME)) / 15.0, 0) * 15, 0)
AS TIME
);
我推薦timefromparts()
:
select timefromparts(datepart(hour, timecol),
(datepart(minute, timecol) / 15) * 15,
0, 0, 6)
以上截斷了該值。 舍入值是一個小問題。 我建議:
select timefromparts(datepart(hour, dateadd(second, 7 * 60 + 30, timecol)),
(datepart(minute, dateadd(second, 7 * 60 + 30, timecol)) / 15) * 15,
0, 0, 6)
也就是說,添加7.5分鍾並截斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.