ホームページ >データベース >mysql チュートリアル >SQL Server の「datetime」データ型のミリ秒精度はどのくらい正確ですか?

SQL Server の「datetime」データ型のミリ秒精度はどのくらい正確ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-13 08:39:42247ブラウズ

How Accurate is Millisecond Precision in SQL Server's `datetime` Data Type?

SQL Server の日付フィールドのミリ秒精度についての深い理解

SQL Server を使用してタイムスタンプを処理する場合、その精度の制限を理解することが重要です。

次のテーブル構造を考えてみましょう:

<code class="language-sql">CREATE TABLE [TESTTABLE]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [DateField] [datetime] NULL,
    [StringField] [varchar](50),
    [IntField] [int] NULL,
    [BitField] [bit] NULL
)</code>

次のコードを実行します:

<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>

期待される動作は、完全なミリ秒の精度でタイムスタンプを保存することです。ただし、次のステートメントを使用してテーブルをクエリする場合:

<code class="language-sql">select * from testtable with (NOLOCK)</code>

DateField 列に次のように表示されることに気づくかもしれません:

<code>2009-04-03 15:41:27.*377*</code>

精度の制限

SQL Server は約 1/300 秒しか保存しません。これらの時間値は常に 0、3、7 ミリ秒になります。例:

<code>00:00:00.000<br></br>
00:00:00.003<br></br>
00:00:00.007<br></br>
00:00:00.010<br></br>
00:00:00.013<br></br>
...</code>

ミリ秒の精度を達成

ミリ秒の精度が重要な場合、SQL Server のネイティブ データ型には直接的な解決策はありません。次の方法が検討できます:

  • カスタム数値フィールド: タイムスタンプをカスタム数値フィールドとして保存し、取得時に再構築します。
  • 文字列ストレージ: タイムスタンプを既知の形式の文字列として保存します。さらに、アクセスを高速化するために、おおよその日付をネイティブ日付型に保存できますが、精度は低くなります。

以上がSQL Server の「datetime」データ型のミリ秒精度はどのくらい正確ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。