如何在单个查询中添加小时和分钟?如何在单个查询中添加小时和分钟
我想这
Select DATEADD(hh,23.59,CAST('2016-07-08' AS DATETIME))
我需要广告23小时59分钟,但我的代码只添加小时。为什么?
如何在单个查询中添加小时和分钟?如何在单个查询中添加小时和分钟
我想这
Select DATEADD(hh,23.59,CAST('2016-07-08' AS DATETIME))
我需要广告23小时59分钟,但我的代码只添加小时。为什么?
这个怎么样?
Select DATEADD(minute, 23*60 + 59, CAST('2016-07-08' AS DATETIME))
编辑:
如果你得到一个浮点/十进制值,如23.59,那么你可以做:
Select DATEADD(minute, FLOOR(@hhmm) * 60 + (@hhmm - FLOOR(@hhmm)) * 100, CAST('2016-07-08' AS DATETIME))
注意:您还可以使用:
Select DATEADD(minute, FLOOR(@hhmm) * 60 + (@hhmm % 1) * 100, CAST('2016-07-08' AS DATETIME))
但我发现模数运算符的这种用法略微不合适。
数学救援! –
谢谢我试过这个如何分割来自数据库23.59的浮点值,它会验证它可以有任何值,如20,18.30 15.22我如何乘以小时部分像23 * 60并添加分钟59 –
您还可以使用DATEADD()
两次:
Select DATEADD(minute,59,DATEADD(hh,23,CAST('2016-07-08' AS DATETIME)))
的datepart
的说法,你的情况hh
,是整数被添加到哪个日期的一部分。所以DATEADD
函数只是忽略输入的任何小数部分。
为了得到结果,你想要的,你必须要么使用DATEADD
两次,增加23小时,然后59分钟,或一天添加到您的日期和减去1分,这样的:
Select DATEADD(MI, -1, CAST('2016-07-08' AS DATETIME) + 1)
谢谢托比,我编辑了我的答案,希望它回答他的问题。 – Oleg
另一种方法:你可以通过添加一天,然后分钟。减去
输出做的是同样的
select DATEADD(minute, -1, DATEADD(DAY, 1,CAST('2016-07-08' AS DATETIME)))
DATEADD和23.59 * 60?或者在DATEADD上打两个电话? (一个小时,一个分钟) – MatBailie
如果这是为了定义一段时间的终点,你应该知道,计算一个独占终点通常非常容易*并且使用'<'而不是'<=' )而不是计算包含端点。例如。目前你打算在当天的最后一分钟排除发生的任何事情吗? –