10

SQL Server (異なる場合は 2000 と 2005) に格納されている日時値の基になるデータ構造は何ですか? つまり、バイト表現まで?

おそらく、日時列を選択したときに得られるデフォルトの表現は、文化固有の値であり、変更される可能性があります。つまり、見えない基礎構造が YYYY-MM-DD HH:MM:SS.mmm にフォーマットされています。

私が尋ねる理由は、私の部門では、文字どおり YYYY-MM-DD HH:MM:SS.mmm としてメモリに格納されているという一般的な見解があるためですが、そうではないと確信しています。

4

1 に答える 1

17

これは 8 バイト フィールドとして保存され、 1753-01-01 から 9999-12-31 までの範囲で、0.00333 秒までの精度が可能です。

詳細はおそらく不透明ですが、Web で見つけたほとんどのリソース(1)(2)には次のように記載されています。

最初の 4 バイトは SQL Server のエポック (1900 年 1 月 1 日) からの日数を格納し、2 番目の 4 バイトは午前 0 時以降のティック数を格納します。ここで、「ティック」は 3.3 ミリ秒です。

最初の 4 バイトは署名されています (正または負の可能性があります)。これは、エポックより前の日付を表すことができる理由を説明しています。

于 2009-07-17T13:28:58.967 に答える