首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果距离最近小时1分钟,则将SQL时间舍入最近的小时。

如果距离最近小时1分钟,则将SQL时间舍入最近的小时。
EN

Stack Overflow用户
提问于 2015-01-27 17:58:53
回答 4查看 2.6K关注 0票数 2

如果时间值与最近的时间相距1分钟,我希望将SQL时间舍入最近的时间。(时间为24小时时钟格式)

例如

代码语言:javascript
复制
23:59 - > 00:00
11:30 - > 11:30
03:59 - > 04:00
01:15 - > 01:15
12:59 - > 13:00

这是我到目前为止所能做的,但它只是接近最近的1分钟。

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-27 18:12:43

如果您尝试添加一分钟,然后测试结果,您可以做出决定:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2015-01-27 18:06:19

这似乎是一个奇怪的要求但是case语句应该做您想做的事情:

代码语言:javascript
复制
select (case when datepart(hour, time) = 59
             then dateadd(hour, datediff(hour, 0, @t) + 1, 0)
             else @t
        end)
票数 0
EN

Stack Overflow用户

发布于 2015-01-27 18:10:05

用这个想法:

代码语言:javascript
复制
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') end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28176953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档