MySQL で現在の時刻を表現するにはどうすればよいでしょうか?実際、表現方法はいろいろありますが、まとめると次のようになります。
datetime 型と timestamp 型はどちらも、YYYY-MM-DD HH:MM:SS の形式でデータを表すために使用されますが、両者にはいくつかの違いがあります。 結論は
確認する環境の準備、簡単に言うと、タイムスタンプフィールドと日付時刻フィールドを持つテーブルがあり、現在のサーバーはCSTタイムゾーンにあります mysql> show テーブル test_time\G を作成します。 ************************** 1. 行 **************************** テーブル: test_time テーブルの作成: CREATE TABLE `test_time` ( `id` int NOT NULL AUTO_INCREMENT、 `ts` タイムスタンプ(6) NULL デフォルト CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `dt` datetime(6) デフォルト CURRENT_TIMESTAMP(6) 更新時 CURRENT_TIMESTAMP(6)、 主キー (`id`) ) エンジン=InnoDB AUTO_INCREMENT=3 デフォルト文字セット=utf8mb4 COLLATE=utf8mb4_0900_ai_ci セット内の 1 行 (0.00 秒) mysql> '%time_zone%' のような変数を表示します。 +------------------+--------+ | 変数名 | 値 | +------------------+--------+ | システムタイムゾーン | CST | | タイムゾーン | システム | +------------------+--------+ セットに2行(0.01秒) データを挿入します。ts と dt の結果は、現在の CST タイム ゾーンでは同じになります。 mysql> test_time から * を選択します。 空のセット (0.00 秒) mysql> test_time() に値を挿入します。 クエリは正常、1 行が影響を受けました (0.00 秒) mysql> test_time から * を選択します。 +----+----------------------------+----------------------------+ | id | ts | dt | +----+----------------------------+----------------------------+ | 3 | 2021-12-05 15:04:13.293949 | 2021-12-05 15:04:13.293949 | +----+----------------------------+----------------------------+ セット内の 1 行 (0.00 秒) セッションのタイムゾーンを UTC に設定し、再度クエリを実行します。タイムゾーンが CST から UTC に変更されたため、ts クエリの結果は以前よりも 8 時間遅くなります。dt はタイムゾーン情報を保持していないため、結果は変更されません。 mysql> time_zone='+00:00' を設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> test_time から * を選択します。 +----+----------------------------+----------------------------+ | id | ts | dt | +----+----------------------------+----------------------------+ | 3 | 2021-12-05 07:04:13.293949 | 2021-12-05 15:04:13.293949 | +----+----------------------------+----------------------------+ セット内の1行(0.01秒) これは、挿入操作によって生成されたバイナリログにも反映されています。ts は、UTC タイムゾーン情報に相当するタイムスタンプ (1970-01-01 00:00:00 UTC から現在までの秒数) としてバイナリログに保存されます。dt にはタイムゾーン情報がありません。結果は、フォーマットされた文字列 2021-12-05 15:04:13.293949 です。下から 4 行目と 5 行目に注目してください。@2=1638687853.293949 は ts フィールドの値を表し、@3='2021-12-05 15:04:13.293949' は dt フィールドの値を表します。 [mysql %] mysqlbinlog -v --base64-output=デコード行 ./mysqlbin.000012 …… @@SESSION.GTID_NEXT を '1cf4493a-dafd-11eb-944c-4016af29c14c:1416767' に設定します。/*!*/; # 14220 で #211205 15:04:13 サーバー ID 1 end_log_pos 14308 CRC32 0x1fd913a3 クエリ thread_id=137 exec_time=0 error_code=0 タイムスタンプを 1638687853.293949/*!*/ に設定します。 始める //*!*/; # 14308 で #211205 15:04:13 サーバー ID 1 end_log_pos 14368 CRC32 0xbb8937fb Table_map: `testa`.`test_time` が番号 121 にマップされました # 14368 で #211205 15:04:13 サーバー ID 1 end_log_pos 14423 CRC32 0x2e0a3baa Write_rows: テーブル ID 121 フラグ: STMT_END_F ### `testa`.`test_time` に挿入します ### セット ### @1=3 ### @2=1638687853.293949 ### @3='2021-12-05 15:04:13.293949' # 14423 で #211205 15:04:13 サーバー ID 1 end_log_pos 14454 CRC32 0x68cee280 Xid = 1416 専念 /*!*/; ピット
これで、MySQL のタイムスタンプと日付時刻のタイムゾーンの問題によって発生する DTS の落とし穴について詳しく説明しました。MySQL のタイムスタンプと日付時刻の落とし穴の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: 純粋な CSS を使用してユーザーが Web ページのコンテンツをコピーするのを防ぐ方法
SELECT ステートメントの完全な構文は次のとおりです。 (7)選択 (8) DISTINCT ...
ある読者から連絡があり、ダウンロードが終了し、操作がまだ開始されていないのに、なぜ Tomcat の...
01. コマンドの概要tr コマンドは、標準入力からの文字を置換、圧縮、削除できます。ある文字セット...
この記事では、ドロップダウンテーブルの複数選択と検索を実現するためのvue+elementuiの具体...
チェックボックスやラジオボタンの使用を含むコードをコピーコードは次のとおりです。 <!DOCT...
質問:私のブログのエンコーディングは utf-8 です。ページを開くと空白になっていることもあります...
mysqladmin ツールの使用形式は次のとおりです。 mysqladmin [オプション] コ...
歴史ルート履歴モードとは、HTML5 の履歴 API を使用してクライアント側ルーティングを実装する...
1. win + R を押して cmd と入力し、DOS ウィンドウに入ります。 2. MySQL...
この記事では、簡単なパズルゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な...
1. ランナーコンテナを作成する mk@mk-pc:~/Desktop$ docker run -d...
まず、どのフィールドまたはフィールドの組み合わせがデータ行を一意に識別できるかを決定する必要がありま...
序文私自身の個人ブログを入力しているときに、ブログの詳細ページでさまざまなコンテンツをコピーするさま...
iframe の使い方:コードをコピーコードは次のとおりです。 <DIV align=cent...
目次最初に要約: 🌲🌲 序文: 🍬🍬公開🍬🍬 🍬🍬グローバル🍬🍬 🍬🍬ボールボックス🍬🍬 🎉🎉🎉結論...