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コンテナの起動失敗を解決する方法

推薦する

HTML ブロックレベルタグとインラインタグの違い

1. ブロックレベル要素: 独立して存在できる能力を指します。通常、ブロックレベル要素は改行によって...

CSSスクロールバースタイル設定の実装

Webkit スクロールバー スタイルのリセット1. スクロールバーには、スクロールバー ボタンとト...

ろうそくを溶かす(水滴)サンプルコードを実現する純粋な CSS

成果を達成する実装のアイデアフィルターのコントラストとぼかしを利用して溶ける効果を実現します。親要素...

NodeサイトのForever+nginx導入方法例

私は最近、最も安い Tencent クラウド サーバーを購入しました。これは主に、Web テクノロジ...

ウェブページの読み込み進捗状況バーの詳細な説明(推奨)

(Web ページの読み込み中に、コンテンツが多すぎて読み込みと待機が続くことがあります。このとき、...

mysql における mydumper と mysqldump の比較

いくつかのテーブルまたは単一のデータベースのみをバックアップする場合は、innobackup よりも...

Vue が価格カレンダー効果を実現

この記事では、価格カレンダー効果を実現するためのVueの具体的なコードを例として紹介します。具体的な...

Mysql Workbench クエリ mysql データベース メソッド

Mysql Workbench はオープンソースのデータベース クライアントです。このオープンソース...

MySQLとOracleの違いのまとめ(機能性能の比較、選択、使用時のSQLなど)

1. 同時実行性同時実行性は OLTP データベースの最も重要な機能ですが、同時実行性にはリソース...

面接官はReactのライフサイクルについてよく質問します

ReactライフサイクルReactのライフサイクルを理解するのに役立つ2つの図React ライフサイ...

VueのVuexの4つの補助機能について

目次1. 補助機能2. 例1. mapState と mapGetters 2. mapMutati...

1 つの記事で Vuex を理解する

目次概要Vuex の 4 つの主要オブジェクト状態の使用突然変異の使用ゲッターの使用アクションの使用...

JavaScript 配列メソッド - 体系的な概要と詳細な説明

目次一般的な配列メソッド配列要素の追加と削除配列ヘッダーの操作配列の末尾を操作する任意の場所に追加ま...

Bootstrap FileInputは画像アップロード機能を実装します

この記事の例では、Bootstrap FileInputの具体的なコードを共有して、画像アップロード...

CSS グリッドレイアウトの完全ガイド

Grid は 2 次元のグリッド レイアウト システムです。これを使用すると、本質的にはハック メソ...