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

推薦する

Mapper SQL ステートメント フィールドとエンティティ クラス属性名の関係は何ですか?

背景: 1. データベースに通知テーブルがある あなたは見ることができますgmt_create、通知...

CSSは複数の要素をボックスの両端に揃える効果を実現します

要素の両端を揃える配置レイアウトは、実際の開発のいたるところで見られます。これは、フレックスレイアウ...

Linux Zabbixカスタム監視およびアラーム実装プロセスの分析

ターゲットzabbix フロントエンド監視の iostat コマンドでデータの 1 つを表示します。...

Windows Server 2008 R2 サーバーが理由もなく自動的に再起動する問題の解決策

Windows Server 2008 サーバーが自動的に再起動します。サーバーにログインした後、ど...

MySQL クエリ フィールド タイプが json の場合の 2 つのクエリ メソッド

テーブル構造は次のとおりです。 id varchar(32) 情報JSONデータ: id = 1 i...

Ubuntu 18.04 のログインループ/ブートインターフェイスで停止/グラフィカルインターフェイスに入ることができない問題を解決する方法

原因: NVIDIA グラフィック カード ドライバーが破損している解決:コマンドラインモードで再起...

dockerでlnmp環境を構築する方法

プロジェクトディレクトリを作成する php ディレクトリをコピーする次のプロジェクト構造を作成します...

Nginx http ヘルスチェック構成プロセス分析

パッシブチェックパッシブ ヘルス チェックでは、NGINX と NGINX Plus はイベントの発...

Debian 9 システムに MySQL データベースをインストールする方法

序文タイトルを見ると、誰もが「Debian 9 に MySQL をインストールするにはどうすればいい...

適応レイアウトの処理について(フロートとマージンネガティブマージンを使用)

適応型レイアウトは、実際のアプリケーションでますます一般的になっています。今日は、主にフローティング...

VPS はオフライン ダウンロード サーバーを構築します (ネットワーク ディスクの時代以降)

モチベーション学習の必要性から、海外のサーバーメーカー(どこのメーカーかは言いません)のVPSサービ...

Web プロジェクト開発 VUE の混合と継承の原則

目次ミキシンMixin ノート (重複名)ローカルミックスイングローバル ミックスイン定義とグローバ...

JavaScriptの知識ポイントの詳しい説明

目次1. JavaScriptの基礎2. 基本的なJavaScript構文3. JavaScript...

アップロード画像コントロールを実現するネイティブ js

この記事の例では、アップロード画像コントロールを実装するためのjsの具体的なコードを参考までに共有し...

Web開発で使用される基本的な概念と技術の紹介

本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...