序文: タイムスタンプ フィールドは、MySQL でよく使用されます。たとえば、データ行が作成または変更された時刻を記録する必要がある場合、通常はタイムスタンプ フィールドを使用します。この記事では、主にタイムスタンプ フィールドの使用方法と関連パラメータを紹介します。この記事をお読みいただくことで、タイムスタンプについてより深く理解していただければ幸いです。 1. TIMESTAMPフィールドタイプの概要 タイムスタンプ フィールド タイプには、時間タイプのデータを保存できます。タイムスタンプが保存できる時間の範囲は、「1970-01-01 00:00:01.000000」から「2038-01-19 03:14:07.999999」です。タイムスタンプ フィールドは 4 バイトを占めます。 MySQL 5.7 では、timestamp で精度を指定できます。つまり、TIMESTAMP(fsp) の fsp で、小数秒の精度を表す 0 ~ 6 のオプションの値を指定できます。値 0 は小数部がないことを意味し、省略した場合、デフォルトの精度は 0 になります。 簡単なテストをしてみましょう: # タイムスタンプは精度を指定できますmysql> CREATE TABLE `stu_tb` ( -> `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自動増分主キー', -> `stu_id` int(11) NOT NULL COMMENT '学生番号', -> `stu_name` varchar(20) DEFAULT NULL COMMENT '学生名', -> `create_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作成時間', -> `update_time` タイムスタンプ(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2) COMMENT '変更時刻', -> 主キー (`id`) -> ) ENGINE=InnoDB デフォルト文字セット=utf8; クエリは正常、影響を受けた行は 0 行 (0.04 秒) mysql> テーブル stu_tb\G の作成を表示します ************************** 1. 行 **************************** テーブル: stu_tb テーブルの作成: CREATE TABLE `stu_tb` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自動増分主キー', `stu_id` int(11) NOT NULL COMMENT '学生ID', `stu_name` varchar(20) デフォルト NULL コメント '学生名', `create_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作成時刻', `update_time` タイムスタンプ(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2) COMMENT '変更時刻', 主キー (`id`) ) エンジン=InnoDB デフォルト文字セット=utf8 セット内の 1 行 (0.00 秒) mysql> stu_tb (stu_id,stu_name) に値 (1001,'dfdfa') を挿入します。 クエリは正常、1 行が影響を受けました (0.01 秒) mysql> stu_tb から * を選択します。 +----+--------+----------+------------------------+-------------------------+ | id | stu_id | stu_name | 作成時刻 | 更新時刻 | +----+--------+----------+------------------------+-------------------------+ | 1 | 1001 | dfdfa | 2020-01-07 17:33:51 | 2020-01-07 17:33:51.63 | +----+--------+----------+------------------------+-------------------------+ セット内の 1 行 (0.00 秒) 2. タイムスタンプに影響するパラメータ タイムスタンプの表示に影響する主なパラメータは、explicit_defaults_for_timestamp と time_zone の 2 つです。以下では、これら 2 つのパラメータがタイムスタンプに与える影響について簡単に説明します。 expressly_defaults_for_timestamp パラメータは、MySQL サーバーがタイムスタンプ列のデフォルト値と NULL 値を処理する方法を決定します。この変数は、MySQL 5.6.6 以降で導入されました。グローバル レベルとセッション レベルに分かれており、動的に更新できます。デフォルト値は OFF です。このパラメータの詳細については、こちらの記事を参照してください。 デフォルトで、explicit_defaults_for_timestamp パラメータが OFF に設定されている場合、動作は次のようになります。
expressly_defaults_for_timestamp パラメータが ON に設定されている場合、動作は次のようになります。
time_zone パラメータは、データベースのタイムゾーンを指定します。time_zone は、グローバル レベルとセッション レベルに分かれています。動的に更新できます。デフォルトは SYSTEM で、データベース サービスのタイムゾーンはシステム タイムゾーンと同じになります。 MySQL がタイムスタンプを保存する場合、データベースに保存される実際の時間は UTC 時間です。クエリを実行して表示すると、特定のタイムゾーンに応じて異なる時間が表示されます。設定ファイルに default_time_zone を記述して、タイムゾーンを指定できます。たとえば、中国のタイムゾーン 8 を指定するには、default_time_zone='+8:00' と記述します。以下は、さまざまなタイムゾーンでの時間の表示の簡単なデモンストレーションです。 # 初期デフォルト値mysql> show variables like '%time_zone%'; +------------------+--------+ | 変数名 | 値 | +------------------+--------+ | システムタイムゾーン | CST | | タイムゾーン | システム | +------------------+--------+ セット内の 2 行 (0.00 秒) mysql> testdb.stu_tb から * を選択します。 +----+--------+----------+------------------------+-------------------------+ | id | stu_id | stu_name | 作成時刻 | 更新時刻 | +----+--------+----------+------------------------+-------------------------+ | 1 | 1001 | dfdfa | 2020-01-07 17:33:51 | 2020-01-07 17:33:51.63 | +----+--------+----------+------------------------+-------------------------+ セット内の 1 行 (0.00 秒) # UTC タイムゾーンに変更して再接続すると、タイムスタンプに保存されている時刻が変更されていることがわかります。mysql> set global time_zone='+0:00'; mysql> '%time_zone%' のような変数を表示します。 +------------------+--------+ | 変数名 | 値 | +------------------+--------+ | システムタイムゾーン | CST | | タイムゾーン | +00:00 | +------------------+--------+ セットに2行(0.01秒) mysql> testdb.stu_tb から * を選択します。 +----+--------+----------+------------------------+-------------------------+ | id | stu_id | stu_name | 作成時刻 | 更新時刻 | +----+--------+----------+------------------------+-------------------------+ | 1 | 1001 | dfdfa | 2020-01-07 09:33:51 | 2020-01-07 09:33:51.63 | +----+--------+----------+------------------------+-------------------------+ セット内の 1 行 (0.00 秒) 3. TIMESTAMP の使用に関するベストプラクティス TIMESTAMP にはさまざまなバリエーションが使用されています。最もよく使用されるもののいくつかを次に示します。
このデータ列は、新しいレコードを作成したり、既存のレコードを変更したりするときに更新されます。
新しいレコードを作成するときにこのフィールドを現在の時刻に設定しますが、後で変更するときには更新しないでください。
新しいレコードを作成するときはこのフィールドを 0 に設定し、後で変更するときに更新します。
新しいレコードを作成するときにこのフィールドを指定された値に設定し、後で変更するときに更新します。 実際には、次のようにテーブルを作成することをお勧めします。 テーブル `table_name` を作成します ( `increment_id` INT UNSIGNED NOT NULL auto_increment COMMENT '自動増分主キー', ... `create_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作成時刻', `update_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '変更時刻', 主キー (`increment_id`) )ENGINE=InnoDB デフォルト文字セット=utf8; つまり、データの各行には作成時刻と変更時刻が含まれます。プログラムは、データを書き込むときに指定された作成時刻と変更時刻を表示する必要がなく、デフォルト値が自動的に入力されます。 タイムスタンプに関して、役に立つと思われる提案と経験をいくつか紹介します。 データテーブルにはcreate_timeとupdate_timeのタイムスタンプフィールドがあり、デフォルト値が設定されています。 要約: この記事では、タイムスタンプの使用方法について詳しく説明します。また、タイムスタンプに影響を与えるいくつかのパラメータについても簡単に紹介します。タイムスタンプの使用法と関連する提案が皆さんのお役に立てば幸いです。実際、これらの内容は公式ドキュメントに記録されています。公式ドキュメントを頻繁に読むことができます。 追伸:最近、生計を立てるために広告記事をいくつか投稿しました。気にしないでください。収入があって初めて、執筆を続けるモチベーションが生まれます。この公開アカウントは今後もオリジナルの技術記事に重点を置きます。注意深い読者は、技術記事がほぼ毎週金曜日に公開されることに気付くでしょう。金曜日の記事は絶対に役に立つのでご安心ください。ご協力ありがとうございます。 上記はMySQLタイムスタンプの使用方法の詳細な内容です。MySQLタイムスタンプの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: ElementuiはデータをxlsxとExcelテーブルにエクスポートします
>>: Linux のごみ箱メカニズムの実装プロセスと使用方法の詳細な説明
この記事の例では、ページング機能を実装するためのVueの具体的なコードを参考までに共有しています。具...
目次1. デバッグ対象2. WebSocketの機能3. ソケット接続を確立する3.1 部屋の作成方...
過去 2 日間、ワークベンチが Alibaba Cloud Server に接続できない問題を解決す...
1. チェックステータスモジュールがインストールされているかどうかを確認します。 [root@loc...
導入いつものように、シーンから始めましょう〜インタビュアー:「トランザクションの4つの特性をご存知で...
:is と :where とは何ですか? :is()と:where()は、セレクターを作成するとき...
構造本文、見出し、HTML、タイトル文章abbr、頭字語、アドレス、引用ブロック、br、引用、コード...
この記事では、Google 入力方法をインストールします。実は以前はSogou入力方式を使っていたの...
Angular Cookie の読み取りおよび書き込み操作のコードは次のようになります。 var a...
昨夜、MySQL データベースにデータセットを挿入したときにエラーが発生しました。データベースは容赦...
方法1:フロート:右さらに、フローティングにするとレイアウトがよりコンパクトになります(隙間がなくな...
遅いクエリをチェックすると、時間が正しくなく、システム時間とちょうど 8 時間異なっていることがわか...
前: マークアップ言語 - フレーズ要素 オリジナルソース 第 7 章 アンカーHTML のリンクの...
多くの組織ではファイル サーバーをバックアップする必要があり、あるサーバーから別のファイル サーバー...
「これは革命になるだろう」という記事が出たあと。業界の皆様に認知され、もちろん内外からの評価もいただ...