start date: 2012-05-29 08:30:00.000
end date: 2012-05-29 15:00:00.000
DATEDIFF(hour,StartDateTime,EndDateTime)
これで 7 時間かかりますが、実際には 6.30 時間です
どうすれば計算できますか?
start date: 2012-05-29 08:30:00.000
end date: 2012-05-29 15:00:00.000
DATEDIFF(hour,StartDateTime,EndDateTime)
これで 7 時間かかりますが、実際には 6.30 時間です
どうすれば計算できますか?
精度が必要な場合は、このアプローチを使用する必要があります
declare @start_date datetime, @end_Date datetime
select @start_date='2012-05-29 08:30:00.000', @end_date='2012-05-29 15:00:00.000'
select datediff(minute,@start_date ,@end_Date)/60.0
declare @start_date datetime, @end_Date datetime
select @start_date='2012-05-29 08:30:00.000'
select @end_date='2012-05-29 15:00:00.000'
select cast(DATEDIFF(MINUTE,@start_date,@end_Date)/60 as varchar)
+'.'+CAST(DATEDIFF(MINUTE,@start_date,@end_Date)%60 as varchar)
これにより、必要な結果が得られます
6.30
時間と分の差で正確な時間を見つけるためのコード、
DECLARE @STARTDATE DATETIME='2015-10-03 19:49:37.000'
DECLARE @ENDDATE DATETIME='2015-10-05 07:31:28.000'
DECLARE @HourOfDiff INT=CAST(datediff(minute,@STARTDATE ,@ENDDATE)/60.0 AS INT)
DECLARE @MinofDiff INT=DATEDIFF(mi,@STARTDATE,@ENDDATE)-(@HourOfDiff*60)
SELECT CAST(@HourOfDiff AS VARCHAR(10))+':'+ CAST(@MinofDiff AS VARCHAR(10))
差を分単位で取得し、分を時間に変換します。
「時間」の日付部分を使用しているため、丸められた値が得られます。分を使用すると、390min が返ってきます。これが正解です。次に、時間に変換します。
このリンクは、このステートメントで何をしているのかをよりよく理解するのに役立ちます。MSDN でDATEDIFF 構文と使用方法も確認してください
サンプルコード:
DECLARE @StartDateTime DATETIME='2012-05-29 08:30:00.000'
DECLARE @EndDateTime DATETIME='2012-05-29 15:00:00.000'
SELECT DATEDIFF(MINUTE,@StartDateTime,@EndDateTime)/60.0
datediff 関数は、2 つの値の間の実際の時間ではなく、指定された単位の交差をカウントするだけです。したがって、あなたの場合、時間間の「時間」交差は9、10、11、12、13、14、および15であり、合計7つの「時間」交差になります。したがって、精度を高めるには、datediff 関数で必要な精度を表す時間単位を使用し、それを時間に変換します。
次の作業例を使用できます-
SELECT DATEDIFF("mi",StartDate,EndDate)/60 AS TimeInHours FROM dbo.JobData<BR>
SELECT DATEDIFF("ss",StartDate,EndDate)/3600 AS TimeInHours FROM dbo.JobData
Hours Sql Server は正しい/正確なデータを生成しないため、分または秒でカウントしてから時間に変換します。