如果时间值与最近的时间相距1分钟,我希望将SQL时间舍入最近的时间。(时间为24小时时钟格式)
例如
23:59 - > 00:00
11:30 - > 11:30
03:59 - > 04:00
01:15 - > 01:15
12:59 - > 13:00这是我到目前为止所能做的,但它只是接近最近的1分钟。
declare @t time
declare @t2 time
set @t = '23:59:00.0000000';
set @t2 = '23:30:00.0000000';
select cast(dateadd(millisecond, 29999, @t) as smalldatetime) as T1, cast(dateadd(millisecond, 29999, @t2) as smalldatetime) as T2发布于 2015-01-27 18:12:43
如果您尝试添加一分钟,然后测试结果,您可以做出决定:
SELECT
cast(dateadd(millisecond, 29999, @t) as smalldatetime) as T1,
cast(dateadd(millisecond, 29999, @t2) as smalldatetime) as T2
,CASE WHEN SUBSTRING(CAST(DATEADD(MINUTE, 1, @t) as nvarchar(15)),4,2) = '00' THEN DATEADD(MINUTE, 1, @t) ELSE @t END
,CASE WHEN SUBSTRING(CAST(DATEADD(MINUTE, 1, @t2) as nvarchar(15)),4,2) = '00' THEN DATEADD(MINUTE, 1, @t2) ELSE @t2 END发布于 2015-01-27 18:06:19
这似乎是一个奇怪的要求但是case语句应该做您想做的事情:
select (case when datepart(hour, time) = 59
then dateadd(hour, datediff(hour, 0, @t) + 1, 0)
else @t
end)发布于 2015-01-27 18:10:05
用这个想法:
select case when datepart(hh,dateadd(minute,1,convert(time,'10:59'))) <> datepart(hh,convert(time,'10:59')) then dateadd(minute,1,convert(time,'10:59'))
else convert(time,'10:59') endhttps://stackoverflow.com/questions/28176953
复制相似问题