MySQL における datetime と timestamp の違いと選択

MySQL における datetime と timestamp の違いと選択

MySQLでよく使用される 2 つの時間保存タイプは、 datetimetimestampです。テーブルを構築する際には、それらをどのように選択するかを考慮する必要があります。それぞれの違いと選び方についてお話しします。

1 違い

1.1 スペース占有

タイプバイトを占有する表現
日時8バイトyyyy-mm-dd 時:分:秒
タイムスタンプ4バイトyyyy-mm-dd 時:分:秒

1.2 表現範囲

タイプ表現範囲
日時'1000-01-01 00:00:00.000000' から '9999-12-31 23:59:59.999999'
タイムスタンプ'1970-01-01 00:00:01.000000' から '2038-01-19 03:14:07.999999'

timestamp は中国語では「 timestamp 」と翻訳され、現在の時刻から Unix 年 1 (1970 年 1 月 1 日 0 時 0 分 0 秒) までの秒数です。一部の時間計算では、 datetime形式の場合、計算が難しくなります。たとえば、私が1994-1-20 06:06:06に生まれ、現在の時刻が2016-10-1 20:04:50の場合、私が生きてきた秒数を計算するには、datetime を変換する関数が必要ですが、 timestamp は直接減算できます。

1.3 タイムゾーン

timestamp 4 バイトのみで、UTC 形式で保存されます。現在のタイムゾーンを自動的に取得し、変換を実行します。

datetimeが 8 バイトとして保存され、タイム ゾーンの取得は実行されません。

つまり、 timestampの場合、保存時と取得時のタイムゾーンが異なると、取得されるデータも異なります。 datetimeの場合、入力したものが返されます。

もう 1 つの違いは、NULL が格納されている場合、 timestamp自動的に現在の時刻を格納するのに対し、 datetime NULL を格納することです。

2 テスト

新しいテーブルを作成しましょう

データの挿入

データを見ると、 NULLが格納されていることがわかります。Timestamp timestamp現在の時刻を自動的に格納しますが、 datetimeNULL

タイムゾーンを East 9 に変更して、データを再度確認します。 timestamp datetimeより 1 時間長いことがわかります。

挿入された値が無効な場合はどうなりますか?挿入された時間がタイムスタンプの場合

結果は0000-00-00 00:00:00です。公式の説明によると、挿入された値が無効な場合は0000-00-00 00:00:00変換されますが、タイムスタンプはMySQL有効な時間形式ではありません。

では、どのようなフォームを挿入できるのでしょうか?ここに3つあります

//以下はすべてMySQLで許可されている形式であり、MySQLは自動的に処理します
2016-10-01 20:48:59
2016#10#01 20/48/59
20161001204859

3つの選択肢

時間がLinux時間を超える場合、またはサーバーのタイムゾーンが異なる場合は、 datetimeを選択することをお勧めします。

自動挿入や自動更新時間機能を使用する場合は、 timestampを使用できます。

年、日付、時刻だけを表現したい場合は、それぞれ 1、3、3 バイトを占めるyeardatetimeも使用できます。datetime datetimeそれらのコレクションです。

MySQLdatetimetimestampの違いと選択に関するこの記事はこれで終わりです。MySQL のdatetimetimestampの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL における Datetime と Timestamp の使用の概要
  • MySQL から Excel にテーブルデータをエクスポートする際の日時形式に関する簡単な説明
  • MySQL における datetime と timestamp の違いと使い方
  • MySQL で datetime 型のデフォルト値を設定する方法
  • MySQL データベースで datetime 型を作成する方法

<<:  ウェブ画像のホットリンクと座標値を設定するサンプルコード

>>:  TypeScriptジェネリックの使用

推薦する

iframeリフレッシュ方式の方が便利

iframeを更新する方法1. 更新するには、JavaScriptのdocument.fr.loca...

Vue 監視属性のグラフィック例の詳細な説明

目次リスナープロパティとは何ですか?リスニングプロパティと計算プロパティの違いは何ですか?監視プロパ...

JavaScript 関数型プログラミングの基礎

目次1. はじめに2. 関数型プログラミングとは何ですか? 3. 純粋関数(関数型プログラミングの基...

MySQLデータベースのトランザクションとロックの詳細な分析

目次1. 基本概念酸3.自動コミット4. トランザクション分離レベル5. 同時実行の一貫性の問題6....

MySQL データベース開発の 36 の原則 (要約)

序文これらの原則は実際の戦闘から要約されています。あらゆる原則の背後には血なまぐさい教訓があるこれら...

ラムダ式の原則と例

ラムダ式ラムダ式 (クロージャとも呼ばれる) は、Java 8 のリリースを推進した最も重要な新機能...

JS 日付コントロール My97DatePicker の基本的な使い方

My97DatePicker は非常に柔軟で使いやすい日付コントロールです。使い方はとても簡単です。...

JavaScriptは組み込みオブジェクトのプロトタイプメソッド実装を追加します

オブジェクトがメソッドを呼び出す順序:インスタンス内にメソッドが存在しない場合は、インスタンス オブ...

Vue プロジェクトに ECharts を導入する

目次1. インストール2. はじめに3. 使用4. 必要に応じてEChartsチャートとコンポーネン...

MySQLでconcat関数を使用する方法

以下のように表示されます。 //managefee_managefee テーブルの年と月を照会し、c...

MySQL 5.7 でパスワードを変更するときに発生する ERROR 1054 (42S22) の解決方法

MySQL 5.7 を新しくインストールしました。ログインすると、パスワードが間違っているというメッ...

docker inspect コマンドの使用に関するヒント

説明と紹介Docker inspect は Docker クライアントのネイティブ コマンドであり、...

虫眼鏡効果を実現するJavaScript

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

nginx をシャットダウン/再起動/起動する方法

閉鎖サービス nginx 停止systemctl 停止 nginx起動するサービス nginx 開始...

Mac VMware Fusion CentOS7 静的 IP 構成チュートリアル図

目次CentOS7をインストールする静的IPの設定viを使用してファイルを編集するCentOS7をイ...