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

SQL Server に日時値を挿入するとミリ秒が表示されなくなるのはなぜですか?

Linda Hamilton
リリース: 2025-01-13 11:19:43
オリジナル
636 人が閲覧しました

Why Do Milliseconds Disappear When Inserting datetime Values into SQL Server?

SQL Server の日時精度: ミリ秒の謎

ミリ秒を含む日時値を SQL Server データベースに挿入するとき (例: 2009-04-03 15:41:27.378)、一見失われたミリ秒に気づくかもしれません (例: 2009-04-03 15:41 になります) :27.377)。 これはバグではありません。これは、SQL Server が日時精度を処理する方法の結果です。

SQL Server が時刻値を保存する方法

SQL Server の datetime データ型には制限があります。つまり、約 1/300 秒の精度で時刻値のみを保存します。 これは、ミリ秒が正確に保存されていないことを意味します。これらは 3 つの可能な値 (0、3、または 7) のいずれかに丸められます。

丸めプロセス

挿入された値 (27.378 ミリ秒) はこれらのサポートされている値の間にあるため、SQL Server はそれを最も近い許容ミリ秒 (27.377) に切り捨てます。 これにより、明らかな矛盾が説明されます。

ミリ秒精度の維持: 回避策

ミリ秒の精度を維持するには、次の代替案を検討してください。

  • 数値ストレージ: 特定のエポックからのミリ秒数を表す数値型 (例: bigint または decimal) として日時値を保管します。表示やその他の操作で必要な場合は、これを datetime 値に変換します。

  • 文字列ベースのストレージ: 一貫した形式 (yyyy-MM-dd HH:mm:ss.fff など) を使用して日時値を文字列として保存します。 これにより、完全なミリ秒値が保持されますが、日付/時刻の計算には変換が必要です。

  • ハイブリッド アプローチ: おおよその日付/時刻の保存には datetime 列を使用し (パフォーマンス上の理由から)、正確なミリ秒値を保存するには別の文字列または数値列を使用します。

これらのアプローチにより、複雑さは若干増しますが、ミリ秒データはそのまま残ります。

以上がSQL Server に日時値を挿入するとミリ秒が表示されなくなるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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