mssqldbにいくつかの間隔を保存する必要があります。日時の精度は約です。3.3ms(0、3、および7でのみ終了できます)。しかし、日時間の間隔を計算すると、結果は0、3、および6でしか終了できないことがわかります。したがって、合計する間隔が多いほど、精度が低下します。ミリ秒単位で正確なDATEDIFFを取得することは可能ですか?
declare @StartDate datetime
declare @EndDate datetime
set @StartDate='2010-04-01 12:00:00.000'
set @EndDate='2010-04-01 12:00:00.007'
SELECT DATEDIFF(millisecond, @StartDate, @EndDate),@EndDate-@StartDate, @StartDate, @EndDate
6つではなく7つの広告を見たいです(そして、できるだけ速くする必要があります)
** アップデート **
DATEDIFF値が0、3、6だけでなく、4、7(他にもある可能性があります)で終わることがわかりますが、それでも不正確です。アレックスによって提案された解決策は機能しています。次のコマンドで正しい日時形式を覚えたくない場合は、同じことが達成できます。
SELECT DATEDIFF(SECOND, @StartDate, @EndDate)*1000 + DATEPART(MILLISECOND , @EndDate) - DATEPART(MILLISECOND , @StartDate)
なぜDATEDIFF(millisecond, @StartDate, @EndDate)
不正確なのか、まだ疑問に思います。