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ジェネリックの使用

推薦する

ショッピングカートの計算を実現する js メソッド

この記事の例では、ショッピングカートの計算を実装するためのjsの具体的なコードを参考までに共有してい...

Windows サーバー ポートを開きます (例としてポート 8080 を使用します)

ポートとは何ですか?私たちが通常参照するポートは、物理的な意味でのポートではなく、具体的には TCP...

JS でモバイルのインタラクティブ エクスペリエンスを向上させる方法

目次1. 即時フィードバック1.1 ボタンからの即時フィードバック1.2 継続的なフィードバック1....

JavaScriptの原理と方向性

これが何を指しているのかをどのように判断するのでしょうか? ①グローバル環境で呼び出された場合はwi...

Vue での weixin-js-sdk の一般的な使用方法の詳細な説明

リンク: https://qydev.weixin.qq.com/wiki/index.php?ti...

スーパーバイザーを使用して nginx + tomcat コンテナを管理する例

必要: docker を使用して nginx + tomcat デュアル プロセスを起動します。実際...

MySQLテーブルのテーブル構造を素早く変更する方法

MySQL テーブルのテーブル構造をすばやく変更する - 「MySQL 管理」から抜粋 ALTER ...

Alibaba Cloud ホストが IP を使用して Web サイトにアクセスできない問題の解決策 (セキュリティ グループ ルールを構成することで解決)

Alibaba Cloud ホストを購入したばかりで、その速度を試すのが待ちきれませんでした。しか...

MySQL の結合インデックスと左端一致原則の詳細な説明

序文これまでインターネットでMySQLジョイントインデックスの最左接頭辞マッチングに関する記事をたく...

CSS変数var()の使い方を理解する必要があります

Web プロジェクトがどんどん大きくなると、CSS は天文学的な大きさと複雑さを増します。この問題を...

MySQLログシステムの詳細情報共有

大規模なシステムに取り組んだことがある人なら誰でも、ログの役割を過小評価してはならないことを知ってい...

動的テーブルを実装するための要素サンプルコード

目次【コード背景】 【コード実装】 #1# -> コード再利用の基本は、再利用可能なコンポーネ...

Linux での sshd サービスとサービス管理コマンドの詳細な説明

sshd SSH は Secure Shell の略で、アプリケーション層のセキュリティ プロトコル...

Vueは、選択した月に応じて日付に対応する曜日を動的に表示します。

私たち謙虚なプログラマーは、今でもこう歌わなければなりません。「あなたも私も、この世に生まれて、一日...

js と jQuery での Ajax の使用例の詳細

目次ネイティブJS GETリクエストの送信方法投稿リクエストの送信方法パラメータ付きのGETリクエス...