時間を含む日付から作業時間を計算するクエリがあります。SQLクエリの丸め誤差で時間を差し引く
AM午前7時00分00秒2011年1月7日 - 例えば、2011年1月7日午前五時40分00秒PM - SQLは
SELECT entityID, StaffID, ActualDate,
DATEDIFF(minute, StartTime, EndTime)/60.0 lunch AS HoursWorked
FROM dbo.qasiteTimesheet
StartTime
とEndTime
ある
0.5 = 10.166666されています両方ともdatetime
タイプ。 Lunch
はnumeric(9,1)
です。
午前6時〜午後5時などの時間を追加すると問題なく動作しますが、34,10,2を追加すると誤って切り上げられます。
私は間違っていますか?
'1.'あなたの例では、何の関係もありません( '-0.5'はどこから来ていますか?) '2'私は '34、10、2'を追加することであなたが意味することを知りません。 '' 3.あなたの例(-0.5なし)は、私が正しいと信じている640分または10.6666時間を私に与えます。 –
@Lieven: '60.0'と' lunch'の間に '-'がない可能性があります。 –
@webb:「ランチ」では数時間でなく分を保存するべきでしょうか?そうすれば、計算がより正確になる可能性があります。もちろん、公式はわずかに異なります: '(DATEDIFF(分、StartTime、EndTime) - ランチ)/ 60.0 AS HoursWorked'。 –