ホームページ > データベース > mysql チュートリアル > SQL Server で日時値を挿入するとミリ秒が失われるのはなぜですか?

SQL Server で日時値を挿入するとミリ秒が失われるのはなぜですか?

DDD
リリース: 2025-01-13 08:32:44
オリジナル
572 人が閲覧しました

Why Does SQL Server Lose Milliseconds When Inserting Datetime Values?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート