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コンテナの原理の分析

推薦する

JavaScript ES 新機能ブロックスコープ

目次1. ブロックスコープとは何ですか? 2. ブロックスコープが必要なのはなぜですか? 3. 関数...

CSSは高さを設定せずにdivを完全に中央に配置することを実現します

必要とする本文の下のdivは垂直方向に中央揃えになっていますdiv 内のテキストを垂直中央に配置する...

JS で if 判定をスムーズに行う方法

目次序文コードの実装アイデア 1アイデア2要約する参照ドキュメント序文プロジェクト内の小さな要件ポイ...

Node.js mysqlクライアントが認証プロトコルをサポートしていない問題を解決する

序文mysql モジュール (プロジェクト アドレスは https://github.com/mys...

CentOSはexpectを使用してスクリプトやコマンドをバッチでリモート実行します

サーバーへのファイルのアップロード、ソフトウェアのインストール、コマンドやスクリプトの実行、サービス...

MySQLの空の値とnull値の違いを知っていますか?

序文最近、友人がSQLを書くときにnull値を判定する方法が間違っていて、プログラム内のデータにエラ...

テーブルはセルとimg画像を結合してtd HTML全体を埋めます

ソースコード(一部のクラスは削除されています):コードをコピーコードは次のとおりです。 <テー...

MySQLのさまざまなロックの概念的理解

楽観的ロック楽観的ロックは、主にデータ バージョン記録メカニズムに基づいて実装され、通常はデータベー...

UTF-8 ファイルの Unicode 署名 BOM (バイト オーダー マーク) の問題

最近、UTF8 エンコードの中国語 Zen Cart Web サイトをデバッグしているときに奇妙な現...

JavaScript が Taobao の虫眼鏡効果を模倣

この記事では、淘宝虫眼鏡効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...

ウェブページ作成のヒントのまとめ

序文この記事は主に、日常の Web ページ制作で遭遇する問題解決スキルの一部をまとめ、皆さんの参考と...

JSはアニメーションのレイアウト変換を実装します

JS でアニメーションを記述する場合、移動前に相対位置を絶対位置に変換してからアニメーション機能を実...

CSS 共通スタイルで二重矢印を描画するサンプルコード

1. 単一の矢印への複数の呼び出し単一の矢印を実装したら、二重矢印を実装するのは簡単です。上では、単...

Linux システムの仮想ホストで Swoole Loader 拡張機能を有効にする方法

特記事項: Swoole 拡張機能のみがインストールされ、サーバーはホストにインストールされません。...

CSS3 メディアクエリにおけるデバイス幅と幅の違いの詳細な説明

1.デバイス幅定義: 出力デバイスの画面表示幅を定義します。 Web ページが Safari で開か...