如何获取SQL Server中两个日期之间的小时数
示例:
staffing_start_date (2017-08-01 06:00:00.00000)
staffing_end_dt (2017-08-01 18:00:00.00000)
答案 0 :(得分:5)
您可以使用datediff()
:
select datediff(hour, staffing_start_date, staffing_end_date)
答案 1 :(得分:2)
如果您需要小时数,可以使用以下
DATEDIFF(second, staffing_start_date, staffing_end_date) / 3600.0
答案 2 :(得分:0)
请参阅DATEDIFF
功能 - https://docs.microsoft.com/en-us/sql/t-sql/functions/datediff-transact-sql。
对于您的问题,您可以使用:
DATEDIFF
( HOUR, staffing_start_date , staffing_end_dt )
DATEDIFF
( HH, staffing_start_date , staffing_end_dt )
答案 3 :(得分:0)
请注意DateDiff的意外陷阱。它根本没有四舍五入。它将截断到您要查找的级别(日,小时,分钟等)
例如,这两个都会返回1,因此在大多数情况下舍入费迪南德的答案更合适。
declare @Start DateTime = '1/1/17 7:59 AM'
Declare @End Datetime = '1/1/17 8:00 AM'
select DATEDIFF(hour, @Start, @end)
declare @Start DateTime = '1/1/17 7:01 AM'
Declare @End Datetime = '1/1/17 8:59 AM'
select DATEDIFF(hour, @Start, @end)
答案 4 :(得分:0)
感谢@Jay Wheeler的评论。
如果您希望小时非常具体,可以按照以下说明使用:
Declare @Start DateTime = '1/1/17 7:59 AM'
Declare @End Datetime = '1/1/17 8:00 AM'
select DATEDIFF(MINUTE, @Start, @end) /60 AS Hour
答案 5 :(得分:0)
如果您不理解其他答案,可以使用DATEDIFF
。
答案 6 :(得分:0)
日期只是数字。数字的组成部分是日期,分数是时间。为了获得天数的差异,您可以转换为int
并将小时数乘以24乘以。
DECLARE @Date1 DateTime
DECLARE @Date2 DateTime
SELECT @Date1 = {ts '2017-08-29 00:00:00.000'},
@Date2 = {ts '2017-08-27 00:00:00.000'}
SELECT CONVERT(int, @Date1) - CONVERT(int, @Date2) AS DifferenceInDays
SELECT (CONVERT(int, @Date1) - CONVERT(int, @Date2)) * 24 AS DifferenceInHours
或者您可以使用DATEDIFF。