Program Tip

SQL Server에서 두 날짜 간의 시간 (십진수) 차이를 계산하는 방법은 무엇입니까?

programtip 2020. 10. 18. 19:01
반응형

SQL Server에서 두 날짜 간의 시간 (십진수) 차이를 계산하는 방법은 무엇입니까?


SQL Server 2008에서 두 날짜 사이의 시간 차이 (십진수 유형)를 계산해야합니다.

MSDN에서 'CONVERT'를 사용하여 datetime을 십진수로 변환하는 유용한 기술을 찾을 수 없습니다.
아무도 저를 도와 줄 수 있습니까?

업데이트 :
명확하게하려면 분수 부분도 필요합니다 (따라서 십진수 유형). 따라서 9:00에서 10:30까지 1.5를 반환해야합니다.


DATEDIFF(hour, start_date, end_date)start_date사이에 교차하는 시간 경계 수를 제공합니다 end_date.

분수 시간이 필요한 경우 DATEDIFF더 높은 해상도로 사용 하고 결과를 나눌 수 있습니다.

DATEDIFF(second, start_date, end_date) / 3600.0

에 대한 설명서 DATEDIFF는 MSDN에서 사용할 수 있습니다.

http://msdn.microsoft.com/en-us/library/ms189794%28SQL.105%29.aspx


두 개의 datetime 값을 빼고 24를 곱하면됩니다.

  Select Cast((@DateTime2 - @DateTime1) as Float) * 24.0

테스트 스크립트는 다음과 같습니다.

  Declare @Dt1 dateTime Set @Dt1 = '12 Jan 2009 11:34:12'
  Declare @Dt2 dateTime Set @Dt2 = getdate()

  Select Cast((@Dt2 - @Dt1) as Float) * 24.0

이는 모든 날짜 시간이 내부적으로 한 쌍의 정수로 저장되고, 첫 번째 정수는 1900 년 1 월 1 일 이후의 일 수이고, 두 번째 정수 (시간을 나타냄)는 자정 이후 의 ( 1 ) 틱 수 이기 때문에 작동합니다. (SmallDatetimes의 경우 시간 부분 정수는 자정 이후의 분 수입니다). 값에 대해 수행되는 모든 산술은 시간 부분을 하루의 일부로 사용합니다. 오전 6시 = 0.25, 정오 = 0.5 등 ... 자세한 내용은 여기 MSDN 링크 를 참조하십시오.

따라서 Cast ((@ Dt2-@ Dt1) as Float)는 두 날짜 시간 사이의 총 일수를 제공합니다. 시간으로 변환하려면 24를 곱하십시오. 총 분이 필요한 경우 24 대신 분으로 배수 (24 * 60 = 1440) ...

참고 1 : 이것은 dotNet 또는 javaScript 틱과 동일하지 않습니다.이 틱은 약 3.33 밀리 초입니다.


DATEDIFF 그러나 정수를 반환하므로 시간의 일부가 필요한 경우 다음과 같이 사용하십시오.

CAST(DATEDIFF(ss, startDate, endDate) AS decimal(precision, scale)) / 3600

Postgres를 사용하여 DATEDIFF에 문제가 있었지만 성공했습니다.

  DATE_PART('day',(delivery_time)::timestamp - (placed_time)::timestamp) * 24 + 
  DATE_PART('hour',(delivery_time)::timestamp - (placed_time)::timestamp) +
  DATE_PART('minute',(delivery_time)::timestamp - (placed_time)::timestamp) / 60

"14.3"과 같은 결과를 얻었습니다.


Declare @date1 datetime
Declare @date2 datetime

Set @date1 = '11/20/2009 11:00:00 AM'
Set @date2 = '11/20/2009 12:00:00 PM'

Select Cast(DateDiff(hh, @date1, @date2) as decimal(3,2)) as HoursApart

결과 = 1.00


DATEDIFF 함수를 찾고있을 것입니다 .

DATEDIFF (datepart, startdate, enddate)

코드는 다음과 같습니다.

DATEDIFF (hh, startdate, enddate)


DATEDIFF(minute,startdate,enddate)/60.0)

또는 소수점 둘째 자리에 사용하십시오.

CAST(DATEDIFF(minute,startdate,enddate)/60.0 as decimal(18,2))

SELECT DATEDIFF (hh, firstDate, secondDate) FROM tableName WHERE ...

참고 URL : https://stackoverflow.com/questions/1770594/how-to-calculate-difference-in-hours-decimal-between-two-dates-in-sql-server

반응형