SQL Server の日付と時刻の精度の問題
SQL Server の datetime 列に値を挿入すると、予期しないミリ秒の損失が発生する可能性があります。たとえば、次のクエリ:
<code class="language-sql">BEGIN INSERT INTO TESTTABLE (IntField, BitField, StringField, DateField) VALUES ('1', 1, 'hello', {ts '2009-04-03 15:41:27.378'}); SELECT SCOPE_IDENTITY() END</code>
その後、SELECT * FROM TESTTABLE WITH (NOLOCK)
を使用してクエリを実行すると、DateField 列の値は次のように表示される場合があります:
<code>2009-04-03 15:41:27.*377*</code>
ミリ秒精度の違いの説明
この明らかなミリ秒の損失は、SQL Server のストレージ制限によるものです。 SQL Server の時間精度は約 1/300 秒で、これらの間隔は常に 0、3、7 ミリ秒になります。したがって、上記の例では、値は最も近い 3 ミリ秒間隔に切り捨てられ、観測される .377 というサフィックスになります。
ミリ秒精度の課題に取り組む
ミリ秒の精度が重要な場合、簡単な修正はありません。推奨される解決策は次のとおりです:
これらのメソッドはさらに複雑になりますが、ミリ秒の精度が絶対に必要な場合に必要な精度を提供できます。
以上がSQL Server で日時値を挿入するとミリ秒が失われるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。