Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中获取两个日期之间的小时数_Sql_Sql Server - Fatal编程技术网

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

如何在sql中获取两个日期之间的小时数,sql,sql-server,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) 您可以使用datediff(): 如果您需要分数小时数,可以使用下面的 DATEDIFF(second, staffing_start_date, staffing_end_date) / 3600.0 请参见DATEDIFFfunction- 对于

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

例如:

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

您可以使用
datediff()


如果您需要分数小时数,可以使用下面的

DATEDIFF(second, staffing_start_date, staffing_end_date) / 3600.0

请参见
DATEDIFF
function-

对于您的问题,您可以使用:

  • DATEDIFF
    (小时、人员配备开始日期、人员配备结束日期)
  • DATEDIFF
    (HH,人员配备开始日期,人员配备结束日期)

请注意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)

感谢@Jay Wheeler的评论

如果您希望小时非常具体,您可以使用如下所示:

声明@Start DateTime='1/1/17上午7:59'
声明@End Datetime='1/1/17上午8:00'
选择DATEDIFF(分钟、开始、结束)/60作为小时

如果您不理解其他答案,您可以使用
DATEDIFF

日期只是数字。数字的整数部分是日期,分数部分是时间。要获得天数差异,您可以将其转换为
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

或者您也可以使用。

我需要的正是这个的可能副本。谢谢,不客气。您可以将此复选框作为结束此查询的答案。谢谢
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