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

时间:2017-08-29 20:30:28

标签: sql sql-server

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

示例:

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

7 个答案:

答案 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