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

推薦する

CSS は、モバイル端末でクリックされたときに生成された要素の背景色を削除します (推奨)

クリック時に背景色を生成する要素の CSS スタイルに次のコードを追加します。 -webkit-ta...

MySqlエスケープの詳細な使用例

MySQL エスケープエスケープとは、エスケープ文字の本来の意味を意味します。エスケープ文字の目的は...

Win2008 R2 mysql 5.5 zip 形式 mysql のインストールと設定

Win2008 R2 zip形式のMySQLのインストールと設定1. Baidu MySQL 5.6...

Linuxはiftopを使用してネットワークカードのトラフィックをリアルタイムで監視します

Linux は iftop を使用してネットワーク カードのトラフィックをリアルタイムで監視します。...

Ubuntuのバックアップ方法(4種類)のまとめ

方法1:リスピンを使用するには、次の手順に従ってください。 sudo add-apt-reposit...

202 無料の高品質 XHTML テンプレート (1)

ここで 123WORDPRESS.COM はこれらのテンプレートの最初の部分を紹介します。各テンプレ...

CSSを使用して画像フレームアニメーションと曲線の動きを実装する

すべてのアニメーションの基本原理は、対応する画像を短時間で次々に表示し、視覚的に動いているように見せ...

MySQLオンラインログライブラリの移行例

最近の事例をお話ししましょう。オンライン Alibaba Cloud RDS 上のゲーム ログ ライ...

MySQL 8.0.15 winx64 のインストールと設定方法のグラフィックチュートリアル (Windows の場合)

この記事では、MySQL 8.0.15 winx64のインストールと設定方法を参考までに紹介します。...

Angularルーティングサブルートの詳細な説明

目次1. サブルート構文2. 例1. 2つの新しいコンポーネントを作成し、その内容を変更する2. ル...

Docker 入門インストールチュートリアル (初心者版)

ドクター紹介: Docker はコンテナ関連の技術です。簡単に言うと、さまざまなソフトウェアを実行で...

VMware Workstation 14 Pro インストール Ubuntu 16.04 チュートリアル

この記事では、VMware Workstation14 ProにUbuntu 16.04をインストー...

JavaScript における var、let、const の違いの詳細な説明

目次グローバル変数として可変ホイスト一時的なデッドゾーンブロックスコープ重複したステートメント宣言さ...

Linuxカーネルスケジューラソースコード初期化の分析

目次1. はじめに2. スケジューラの基本概念2.1. 実行キュー (rq) 2.2 スケジューリン...

JS での矢印関数と this の記述と理解

目次序文1. JSで関数を書く方法1. 通常の関数の書き方2. 矢印関数の書き方2. 通常の関数でこ...