回合时间(7)列值不接近15分钟



我有 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 分钟并截断。

最新更新