如何在SQL中获取两个日期之间的小时数

3

如何在 SQL Server 中获取两个日期之间的小时数

示例:

staffing_start_date (2017-08-01 06:00:00.00000)
staffing_end_dt (2017-08-01 18:00:00.00000)

7个回答

5
您可以使用datediff()函数:
select datediff(hour, staffing_start_date, staffing_end_date)

2
如果您需要小数小时的数量,可以使用以下方法:
DATEDIFF(second, staffing_start_date, staffing_end_date) / 3600.0

这正是我所需要的。谢谢你。 - Tburg
不用谢。您可以将此作为答案进行确认,关闭此次查询。谢谢。 - Ferdinand Gaspar

0

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

0

如果你没有理解其他答案,你可以使用DATEDIFF


0
请注意DateDiff的意外陷阱。它不会进行任何舍入。它将截断到您要查找的级别(天、小时、分钟等)。
例如,这两个都将返回1,因此大多数情况下舍入Ferdinand的答案更合适。
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)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接