MySQLの保存時間の不一致の問題を解決する

MySQLの保存時間の不一致の問題を解決する

Java を使用してシステム時間を取得し、それを MySQL データベースに保存した後、時間タイプが datetime または Timestamp の場合、データベースの保存がローカル時間と一致しないことがわかります。

大きな原因は、MySQL に設定されているタイムゾーンがローカルタイムゾーンと一致していないことです。解決策は、オンラインで検索して見つけることができる MySQL タイムゾーン設定を変更することです。

私は2番目の方法をお勧めします

プロジェクトの実際のニーズに応じて、データベースに接続する DBUtil クラスで設定するだけです。たとえば、次のコードでは、タイムゾーンをアジアの上海と同じタイムゾーンに変更しました。

プライベート静的文字列ドライバー = "com.mysql.cj.jdbc.Driver";
    プライベート静的文字列 url = "jdbc:mysql://127.0.0.1:3306/mypetstore?serverTimezone=Asia/Shanghai&useSSL=false";

serverTimezone=Asia/Shanghai はタイムゾーンを設定するために使用されます。

MySQL からタイムスタンプ データを取得してブラウザに表示すると、末尾に常に .0 が付いてしまい、非常に煩わしいです。どうすればよいでしょうか?

次のEL式とJSTLタグを使用してフォーマットすることができます。log.dateは見つかった時間データです。

<fmt:formatDate 値="${log.date}" タイプ="日付" パターン="yyyy-MM-dd HH:mm:ss" />

注意: yyyy-MM-dd hh:mm:ssと書くと午前と午後の区別がつきません

補足:MySQL のストレージ時間または日付の不整合の問題

ここでは、MySQL データベースにレコードを追加するときに日付が 1 日ずれたり、時刻が間違っていたりする問題について説明します。

問題のシナリオ

コードロジックに問題はありません。ステップごとに実行すると、保存時の日付は正しいのですが、データベースに保存された日付が間違っていることがわかりました。

理由

理由は、データ ソース接続を構成するときに追加したパラメータに問題があるためです。正しく推測すると、構成した serverTimezone パラメータは UTC である必要があります。これは、間違ったタイム ゾーンが使用されているため、データを保存するときに日付が間違って配置されるためです。

ここに画像の説明を挿入

解決

以下のように、serverTimezone を Asia/Shanghai に設定します。もう一度試すと、問題は解決します。

ここに画像の説明を挿入

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • MySQL で時刻と日付の型を保存する際の選択問題を分析する
  • MySQLストレージ時間タイプの選択に関する問題の説明
  • 時刻を保存するために適切な MySQL の datetime 型を選択する方法
  • 指定された期間内のすべての日付または月を取得する MySQL ステートメント (ストアド プロシージャの設定やテーブルの追加は不要)
  • MySQL で日付を保存するためのベスト プラクティス ガイド

<<:  主軸上のFlex子要素の比率を制御する方法

>>:  Dockerコンテナの原理の分析

推薦する

ティックアニメーション効果を作成するための svg+css または js

以前、上司からログイン後にチェックマークを表示できるプログラムを作るように言われたのですが、Baid...

優れたウェブフロントエンドデザインの指標

Web ページのアクセシビリティは、フロントエンドでのみ評価および実装できるもののようです。ユーザビ...

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

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

MySQL: MySQL 関数

1. 組み込み関数1. 数学関数ランド()丸め(数値) ceil(数値)階数(数値)ランダム丸め切り...

Vueを使用して天気コンポーネントをロードする方法の詳細な説明

この記事では、Vueを使用して天気コンポーネントをロードする方法を参考までに紹介します。具体的な内容...

jQueryはシンプルなポップアップウィンドウ効果を実装します

この記事では、簡単なポップアップウィンドウ効果を実現するためのjQueryの具体的なコードを参考まで...

nginx をベースにした Web クラスター プロジェクトをすばやく構築する方法を説明します。

目次1. プロジェクト環境2. プロジェクトの説明3. プロジェクトの手順1. インストール2. 構...

Vue の computed と watch の違いを理解する方法

目次概要計算された監視プロパティを監視する要約する概要Vue プロジェクトでは、computed と...

DockerでMongoDBコンテナをデプロイする方法

目次Dockerとは展開する1. イメージをプルする2. 画像を表示する3. コンテナを実行する4....

MySQL の簡単な分析 - MVCC

バージョンチェーンInnoDB エンジン テーブルでは、クラスター化インデックス レコードに 2 つ...

React のクラスからフックへの移行

目次リアクトフック序文なぜフックなのか?クラス関数クラスとフックの比較フックはコンポーネントの状態を...

画像のプリロードと遅延ロードを実装するJavaScript

この記事では、JavaScriptで画像のプリロードと遅延ロードを実装するための具体的なコードを参考...

ユーザーがフォームを繰り返し送信するのを防ぐ方法の概要

重複したフォーム送信は、マルチユーザー Web アプリケーションで最も一般的で厄介な問題です。重複送...

Swiper.jsプラグインを使用すると、カルーセル画像を非常に簡単に実装できます。

Swiper は、携帯電話やタブレットなどのモバイル端末向けに設計された、純粋な JavaScri...

MySQLウィンドウ関数の具体的な使用法

目次1. ウィンドウ関数とは何ですか? 1. ウィンドウをどのように理解しますか? 2. ウィンドウ...