MySQL の時間保持問題に関する簡単な分析

MySQL の時間保持問題に関する簡単な分析

MySQL のデフォルトの時間タイプ (datetime と timestamp) の精度は秒です。時間値が 1 秒未満の精度で設定されている場合、切り捨てられ、データベース内の値が元の値より 1 秒長くなる可能性があります。つまり、本来は今日に属する記録が、明日は記録される可能性があります。

以下は、時間がどのように丸められるかを示す例です。まずテーブルを作成します。

テーブルtest_timeを作成します(
 time_sec 日付時刻、
 time_millis 日付時刻(3)、
 time_micros 日付時刻(6),
 stamp_sec タイムスタンプ、
 stamp_millis タイムスタンプ(3)
 stamp_micros タイムスタンプ(6)
);

datetime と timestamp を精度で定義できることを知らない読者もいるかもしれません。精度の値は 0 ~ 6 で、保持される小数点以下の桁数を示します。デフォルト値は 0 です。明らかに、3 桁を保持するとミリ秒の精度と見なすことができ、6 桁を保持するとマイクロ秒の精度と見なすことができます。

次にレコードを挿入します。

test_timeに挿入
( 時間_秒、時間_ミリ秒、時間_マイクロ秒、 
 スタンプ秒、スタンプミリ、スタンプマイクロ)
値(
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654'
);

次に、別のselect * from test_timeクエリを実行すると、次の結果が表示されます。

時間_秒 | 時間_ミリ | 時間_マイクロ | スタンプ_秒 | スタンプ_ミリ | スタンプ_マイクロ |
---------------------|-----------------------|-----------|-----------------------|------------------------|--------------------------|
2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|

データベース内のtime_secとstamp_secの秒の値が切り上げられ、time_millisとstamp_millisのミリ秒の値が切り上げられていることがわかります。

このようなエラーを回避するには、次の 2 つの方法があります。

  • フィールドを定義するときはdatetime(6)またはtimestamp(6)を使用します。
  • フィールドは精度なしで定義されますが、時間がデータベースに保存される前にミリ秒の値が切り捨てられます。

関連文書:

MySQL 5.6 リファレンス: 時間値の小数秒

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQL の日付データ型と時刻型の使用法の概要
  • MySQL における TIMESTAMP の使用法の詳細な説明
  • MySql クエリ期間メソッド
  • MySQL の日付と時刻の形式変換の実装ステートメント
  • mysql 時間差計算関数
  • FROM_UNIXTIME フォーマット MYSQL タイムスタンプ関数
  • Mysql 日付時刻 DATE_FORMAT (日付、形式)
  • MySQL で日付とタイムスタンプを変換するための関数とメソッド
  • MySQL でさまざまな SQL 文を記述して、1 日、1 週間、1 か月の時間データを取得する方法
  • MySQL タイムスタンプ自動更新タイムシェアリング

<<:  レスポンシブ原則をシミュレートするための基礎コードの Vue 実装の例

>>:  Dockerコンテナの起動失敗を解決する方法

推薦する

MySQL インデックスの設計と最適化の方法

目次インデックスとは何ですか?左端のプレフィックス一致の原則key_lenの計算方法インデックスの最...

CSS 完全な視差スクロール効果

1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...

DD DT DLタグの使用例

通常は <ul><li> タグを使用しますが、dd タグと dt タグも便利...

NexusはHTTPSプロトコルをサポートするためにnginxプロキシを使用します

背景すべての会社の Web サイトは HTTPS プロトコルをサポートする必要があります。Aliba...

Vue.js $refs 使用例の説明

プロパティやイベントがあるにもかかわらず、JavaScript で子コンポーネントに直接アクセスする...

JavaScriptのURLオブジェクトとは何かについて話しましょう

目次概要ハッシュプロパティホストプロパティホスト名属性Href属性起源のプロパティユーザー名とパスワ...

最初のReactページを作成する方法

目次Rractとは何ですか?背景React スキャフォールディングJSXとは何かRractとは何です...

Element-ui の組み込み 2 つのリモート検索 (ファジークエリ) の使用方法の説明

問題の説明フロントエンドリモート検索やファジークエリと呼ばれる種類のクエリがあります。 Ele.me...

Vue の img の src 画像アドレスの動的スプライシングの問題について

Vue での img の動的スプライシングを見てみましょう。src 画像アドレス、具体的な内容は次の...

MySQLのFreeListメカニズムの詳細な説明

1. はじめにMySQL が起動すると、BufferPool が初期化されます。クエリ操作を実行する...

HTMLウェブページテーブル構造化マークアップの応用に関する簡単な説明

Web テーブルの構造マークアップについて説明する前に、いくつかの画像を見てみましょう。 HTML ...

Vueを使い始める際に習得する必要がある知識について簡単に説明します

最も人気のあるフロントエンド フレームワークの 1 つとして、Vue は多くのフロントエンド開発エン...

Vue は zip ファイルのダウンロードを実装します

この記事の例では、Vueの具体的なコードを共有し、zipファイルをダウンロードして参考にしています。...

Vueは透かし効果を簡単に実現します

序文: Vueプロジェクトで透かし効果を使用するには、コンテナを指定できます効果画像: 1. コンテ...

よくある HTML タグの記述エラー

HTML Police がコードを調べて意味のないタグをすべて見つけ出すので、注意を払う必要がありま...