DATEDIFF四舍五入截止日期小时SQL Server
我的客户有这个KTV小时规则所有退房20分钟以上将被视为额外的1小时。DATEDIFF四舍五入截止日期小时SQL Server
实施例以下代码:
declare @dateStart as datetime, @dateEnd as datetime
set @dateStart = cast('3/2/2013 8:00:00 PM' as datetime)
set @dateEnd = cast('3/2/2013 9:20:02 pm' as datetime)
SELECT DATEDIFF(hour, @dateStart, @dateEnd)
上述代码逻辑返回1:20小时。在SQL服务器中,它将返回1小时。我怎样才能调整这个代码返回2小时?
在此先感谢。
使用此:
declare @dateStart as datetime, @dateEnd as datetime
set @dateStart = cast('3/2/2013 8:00:00 PM' as datetime)
set @dateEnd = cast('3/2/2013 9:20:02 pm' as datetime)
SELECT CEILING(CAST(DATEDIFF(minute, @dateStart, @dateEnd)as float)/60)
更多:CEILING
太棒了!谢谢@Iswanto San – user2059064 2013-03-12 06:22:59
@IswantoSan:如果差异小于1:20,则不起作用。它仍然是“细胞”。 – 2013-03-12 06:30:42
@IswantoSan:不符合规范的Bu;它将所有事情都收集起来,而不仅仅是从20分钟到59分钟。 – 2013-03-12 06:31:41
添加40分钟消耗的时间,并截断到小时,如下:
declare @dateStart as datetime, @dateEnd as datetime
set @dateStart = cast('3/2/2013 8:00:00 PM' as datetime)
set @dateEnd = cast('3/2/2013 9:20:02 pm' as datetime)
select Elapsed = datediff(hour, @dateStart, dateadd(minute,40,@dateEnd))
回报
Elapsed
-----------
2
您将硬分码分为40 .. – 2013-03-12 06:37:40
试试这个:
declare @dateStart as datetime, @dateEnd as datetime
set @dateStart = cast('3/2/2013 8:00:00 PM' as datetime)
set @dateEnd = cast('3/2/2013 9:20:02 pm' as datetime)
SELECT DATEDIFF(hour, @dateStart, @dateEnd)
+
case
when datediff(minute,@dateStart, @dateEnd)%60>=20 then 1
else 0
end
更确切地说,你也可以在这里添加秒。
@ user2059064:这是否有帮助? – 2013-03-12 06:32:29
+1,但为什么不呢:'datediff(分钟,@ dateStart,@dateEnd)%60> 0'? - 编辑:没关系,我没有看到在20分钟限制顶部的声明...... – Johan 2013-03-12 08:08:41
“@ dateStart”总是正好在一个小时内?如果开始是“7:59:59”而结束是“9:00:01”,结果应该如何? – 2013-03-12 07:22:40