如何在单个查询中添加小时和分钟?
我试过这个
Select DATEADD(hh,23.59,CAST('2016-07-08' AS DATETIME))
我需要投放23小时59分钟,但我的代码只会增加小时数。为什么呢?
答案 0 :(得分:4)
这个怎么样?
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))
但我发现模数运算符的这种用法略显偏离。
答案 1 :(得分:1)
您还可以使用DATEADD()
两次:
Select DATEADD(minute,59,DATEADD(hh,23,CAST('2016-07-08' AS DATETIME)))
答案 2 :(得分:1)
datepart
参数(在您的情况下为hh
)是添加整数的日期的一部分。因此DATEADD
函数只会忽略输入的任何小数部分。
要获得您想要的结果,您需要使用DATEADD
两次,添加23小时然后59分钟,或者将一天添加到您的日期并减去1分钟,如下所示:
Select DATEADD(MI, -1, CAST('2016-07-08' AS DATETIME) + 1)
答案 3 :(得分:0)
另一种方法:你可以通过添加一天然后减去分钟来实现
输出相同
select DATEADD(minute, -1, DATEADD(DAY, 1,CAST('2016-07-08' AS DATETIME)))
答案 4 :(得分:0)