時刻を保存するために適切な MySQL の datetime 型を選択する方法

時刻を保存するために適切な MySQL の datetime 型を選択する方法

データベースを構築してプログラムを書くとき、日付と時刻の使用は避けられません。データベースには、timestamp や datetime など、さまざまな日付と時刻のフィールドがあり、int を使用して Unix タイムスタンプを保存します。

初心者だけでなく、経験豊富なプログラマーの中にもまだ混乱している人がいます。日付と時刻を保存するにはどの型を使用すればよいのでしょうか?

次に、それぞれの特性を段階的に分析し、ニーズに応じて適切なフィールドタイプを選択して保存できるようにします(親が子供の頃から近所の子供と自分を比較するのと同じように、利点と欠点を比較します)。

日付時刻とタイムスタンプ

  1. datetime は、カレンダーの時刻と時計の時刻を組み合わせたもの、つまり特定の時刻を意味します。
  2. タイムスタンプは、時間を記録するのに適しています。たとえば、私は 2016-08-02 10:35:52 に東部標準時ゾーン 8 にいて、あなたは日本にいます (東部標準時ゾーン 9 の時間は 2016-08-02 11:35:52)。私たちはチャットをしており、データベースは時間を記録します。取得後、私の時間は 2016-08-02 10:35:52 で、日本のあなたの時間は 2016-08-02 11:35:52 です。したがって、タイムゾーンの計算を考慮する必要はありません。
  3. 時間範囲はタイムスタンプの制限(1970-2038)です。もちろん、日付時刻(1000-9999)では劉備が生まれた時期を記録できません(161)。

タイムスタンプとUNIXタイムスタンプ

  1. 表示は直感的であるため、問題のトラブルシューティングが容易になります。多くの long int 数値よりもはるかに見栄えがよいです。
  2. int は 1970 年から累積を開始しますが、int でサポートされる範囲は 1901-12-13 から 2038-01-19 03:14:07 までです。より広い範囲が必要な場合は、bigInt に設定する必要があります。ただし、この時間にはミリ秒は含まれません。ミリ秒が必要な場合は、浮動小数点数として定義する必要があります。 datetime と timestamp には、ネイティブで 6 桁のマイクロ秒が付属しています。
  3. タイムスタンプには、上記の項目 2 と同じように、独自のタイムゾーン変換があります。
  4. フロントエンドでユーザーが入力する時間は、通常、日付型です。int として保存される場合は、保存前と取得後に処理する必要があります。

要約:

  1. タイムスタンプは、更新/作成/公開/ログイン時間/購入時間/ログイン時間/登録時間など頻繁に変更される情報を記録し、最新かつ十分であり、自動タイムゾーン処理により、例えば海外でのショッピングや海外への事業展開の際にも役立ちます。
  2. datetime は、サーバーがスケジュールされたタスクやフィットネス運動計画の時間などを実行する時間などの固定時間を記録します。どのタイムゾーンでも何かを実行するには固定時間が必要です。タイムゾーンがタイムスタンプを超える場合、タイムゾーンが必要な場合はタイムゾーン処理を覚えておく必要があります。
  3. UNIX タイムスタンプはあまり使い勝手がよくありません。範囲の比較に関しては、timestamp と datetime が使えます。
  4. タイムゾーンを気にしない、または独自のタイムゾーンプランがある場合は、好きなものを選択できます。
  5. Laravel は国際的に設計されたフレームワークです。プログラマーの利便性とデータベース設計標準への準拠のため、created_at と updated_at でタイムスタンプが使用されるのは当然です。
  6. 範囲とタイムゾーンの問題を解決する時間タイプはありますか?これは不可能です。tinyInt や BigInt もあるのではないでしょうか?必要なものを取得すれば、MySQL ではデータベース フィールドを変更できます。
  7. 誕生日は、年/月/日などの複数のフィールドを使用して保存できるため、特定の日に誕生日を迎えるユーザーを簡単に見つけることができます (User::where(['month' => 8, 'day' => 12])->get())

プロジェクトを構築するときは、どのプロジェクトがビジネス シナリオに適しているかを慎重に検討する必要があります。どれを選ぶべきでしょうか?需要によります。

これで、時間を保存するために適切な MySQL の日付と時刻の型を選択する方法に関するこの記事は終了です。MySQL の日付と時刻の型の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL の時間タイプの選択
  • MySQLストレージ時間タイプの選択に関する問題の説明
  • mysqlの時間タイプの選択について
  • MySql と Java の時間型の解析
  • MySQL の日付データ型と時刻型の使用法の概要
  • MySQL の時間タイプとモードの詳細

<<:  初心者でもjsのtypeofとinstanceofの違いを理解できます

>>:  最小限の展開で CentOS8 に OpenStack Ussuri をインストールする方法の詳細なチュートリアル

推薦する

入力スクリプトなしでタイプ拡張を使用する方法

序文JS の型付けが弱く、記述基準が緩く、開発ツールのサポートが弱いため、前任者のコードをメンテナン...

同じドメイン名を持つ Nginx プロキシのフロントエンドとバックエンドの分離プロジェクトの完全な手順

フロントエンド プロジェクトとバックエンド プロジェクトは分離されており、フロントエンドとバックエン...

フロントエンドJavaScript ES6の詳細について

目次1. はじめに1.1 Babel トランスコーダ1.2 ポリフィル2. let と const ...

JavaScript DOM オブジェクト操作

目次1. コア1. Domノードを取得する2. ノードの更新2.1 実践演習3. Domノードを削除...

Linux sftp コマンドの使用法

SFTPの概念sftp は、安全なファイル転送プロトコルである Secure File Transf...

Vueのログインとログアウトの詳細な説明

目次ログインビジネスプロセスログイン機能の実装要約するまず、エフェクトの実装プロセスを見てみましょう...

CentOS に PHP5 をインストール、PHP をアンインストール、PHP7 をインストールするチュートリアル

まず、PHP5をインストールするのはとても簡単ですyum install php PHP5 を使用し...

Linuxでポートが開いているかどうかを確認する方法のまとめ

方法1: lsofコマンドを使用するlsof コマンドを使用して、ポートが開いているかどうかを確認で...

Linux のファイル権限とグループ変更コマンドの詳細な説明

Linux では、すべてがファイルであり (ディレクトリもファイルです)、各ファイルにはユーザーに対...

202 無料の高品質 XHTML テンプレート (1)

ここで 123WORDPRESS.COM はこれらのテンプレートの最初の部分を紹介します。各テンプレ...

JS で美しい条件式を書く方法についての簡単な説明

目次複数の条件文複数属性オブジェクトスイッチステートメントを置き換えるデフォルトパラメータとデストラ...

mysql8.0.21 のダウンロードとインストールに関する詳細なチュートリアル

公式ウェブサイトアドレス: https://www.mysql.com/インストールの提案: インス...

ウェブサイトのビジュアルデザインの重要なポイント

手工芸デザインからグラフィックデザイン、そしてウェブデザインまで、デザインの原則は同じままですが、私...

vue-cli 設定では Vuex の完全なプロセスレコードを使用します

目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...

JavaScript における var と let の違い

目次1. スコープはさまざまな方法で表現されます2. 変動昇進と非昇進の違い3. 一時的なデッドゾー...