MySQL で時刻と日付の型を保存する際の選択問題を分析する

MySQL で時刻と日付の型を保存する際の選択問題を分析する

一般的なアプリケーションでは、timestamp、datetime、int 型を使用して時間形式を保存します。

int (javaBean の Integer または int に相当)

1. 4バイトを占有する

2. インデックス作成後、クエリ速度が速くなる

3. 条件範囲検索は、

4. MySQLが提供する時間関数が使用できない

結論: 多数の時間範囲クエリを必要とするデータテーブルに適しています

datetime (日付型は javaBean で使用されます)

1. 8バイトを占有する

2. 空の値を許可し、値をカスタマイズできますが、システムは値を自動的に変更しません。

3. 実際の形式のストレージ(保存したものを保存し、保存したものと同じものを取得します。)

4. TIMEZONE と変換を扱うものは何もありません。

5. デフォルト値を設定することはできないため、null 値が許可されていない場合は、データを正常に挿入するには、datetime フィールドの値を手動で指定する必要があります。

6. datetime フィールドの値を指定するときに、now() 変数を使用してシステムの現在の時刻を自動的に挿入できます。

結論: datetime 型は、レコード内の他のフィールドの値をどのように変更しても、手動で変更しない限り datetime フィールドの値は変更されないため、データの元の作成時刻を記録するのに適しています。

タイムスタンプ (JavaBean の日付またはタイムスタンプ型)

1. 4バイトを占有する

2. 空の値は許可されますが、カスタム値は許可されないため、空の値は意味を持ちません。

3. TIMESTAMP 値は 1970 年より前または 2037 年より後にすることはできません。つまり、「1968-01-01」などの日付は、DATETIME または DATE 値には有効ですが、TIMESTAMP 値には有効ではなく、そのようなオブジェクトに割り当てられると 0 に変換されます。

4. 値はUTC形式で保存されます(ミリ秒数を格納します)

5. タイムゾーン変換: 保存時に現在のタイムゾーンを変換し、取得時に現在のタイムゾーンに戻します。

6. デフォルト値は CURRENT_TIMESTAMP() で、これは実際には現在のシステム時刻です。

7. データベースは自動的に値を変更するため、レコードを挿入するときにタイムスタンプ フィールドの名前とタイムスタンプ フィールドの値を指定する必要はありません。テーブルを設計するときにタイムスタンプ フィールドを追加するだけで済みます。挿入後、フィールドの値は自動的に現在のシステム時間になります。

8. 将来いつでもテーブル内のレコードを変更すると、対応するレコードのタイムスタンプ値が現在のシステム時間に自動的に更新されます。

結論: タイムスタンプ型は、レコード内の他のフィールドの値を変更すると、タイムスタンプ フィールドの値が自動的に更新されるため、データの最終変更時刻を記録するのに適しています。

要約する

上記は、MySQL で時間と日付の型を保存する選択問題の分析に関するものです。興味のある方は、MySQL のステートメント サブクエリの効率最適化スキルの例、MYSQL サブクエリとネストされたクエリの最適化の例の分析、サブクエリの代わりに接続 (結合) を使用した MySQL の最適化などを参照してください。質問がある場合は、いつでもメッセージを残していただければ、編集者がすぐに返信します。これが皆さんのお役に立てば幸いです。

以下もご興味があるかもしれません:
  • MySQLストレージ時間タイプの選択に関する問題の説明
  • 時刻を保存するために適切な MySQL の datetime 型を選択する方法
  • MySQLの保存時間の不一致の問題を解決する
  • 指定された期間内のすべての日付または月を取得する MySQL ステートメント (ストアド プロシージャの設定やテーブルの追加は不要)
  • MySQL で日付を保存するためのベスト プラクティス ガイド

<<:  jsはテーブルドラッグオプションを実装します

>>:  mysqlパラメータsql_safe_updatesを使用して更新/削除範囲を制限する方法の詳細な説明

推薦する

MySQLの主キーとユニークキーの重複挿入の解決策の詳細な説明

目次解決: 1. 無視する2. 交換する3. 重複キーの更新についてデータを挿入するときに、重複した...

Vue でログインと登録テンプレートを実装するためのサンプルコード

テンプレート 1: ログイン.vue <テンプレート> <p class=&quo...

ローカル Docker に Postgres 12 + pgadmin をインストールする方法 (Apple M1 をサポート)

目次導入Intel CPUをサポートApple M1のサポートテスト導入このプロジェクトでは最近、P...

MySQL バッチ追加および保存メソッドの例

ストレステストにログインする際には、多くの異なるユーザーが必要となり、データベースに新しいデータを追...

Django 2.2 を MySQL データベースに接続する方法

1. プロジェクトの実行時に報告されるエラー情報は次のとおりです。 ファイル "/home...

Alibaba Cloud centos7にmysql8.0.22をインストールする詳細なチュートリアル

1. MySQLインストールパッケージをダウンロードするまず、https://dev.mysql.c...

JSは検証コードのランダム生成を実装します

この記事の例では、検証コードのランダム生成を実現するためのJSの具体的なコードを参考までに共有してい...

mysqlにコメント情報を追加する実装

序文最近、MySQL に関するメモをいくつか尋ねる人がいたので、ブログ記事を書かなければなりません。...

ES6拡張演算子の理解と使用シナリオ

目次1. 適用メソッドを置き換え、関数を呼び出すときにパラメータを処理する2. 残りパラメータ(残り...

nginxはdockerコンテナ内に設定ファイルを自動的に生成します

企業が Docker 自動デプロイメントを構築する場合、Docker の実行時にコンテナ内の設定ファ...

JS を使用して Web ページのウォーターフォール レイアウトを実装する方法

目次序文:ウォーターフォールレイアウトとは何ですか?達成方法: 1. 画像を取得する2. 画像の帯域...

MySQL データベース ターミナル - 一般的な操作コマンド コード

目次1. ユーザーを追加する2. ユーザー名とホストを変更する3. パスワードを変更する4. ユーザ...

スタートアップ企業が丹念に作り上げた優れたウェブデザイン17選

スタートアップ企業は、型破りな仕事のやり方、ユニークなビジネスモデル、特徴的な製品やサービス、パーソ...

JS 実用的なオブジェクト指向スネークゲームの例

目次考える1. 貪欲な蛇の効果画像2. スネークの分析2.1 ゲーム開始機能2.2 運動機能2.2....

CSS の高さの崩壊問題の解決

1. 崩壊度が高いドキュメント フローでは、親要素の高さはデフォルトで子要素によって拡張されます。つ...