時刻を保存するために適切な 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 をインストールする方法の詳細なチュートリアル

推薦する

MySQL の instr を使用したファジー クエリ メソッドの紹介

MySQL の内部関数instrを使用すると、従来の like クエリ メソッドを置き換えることがで...

JavaScriptでカレンダー効果を素早く実装

この記事では、カレンダー効果を素早く実現するためのJavaScriptの具体的なコードを例として紹介...

Vue プロジェクトで axios リクエストを使用する方法

目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...

HTML で中国語を UTF-8 に変換する方法

HTMLでは、中国語のフレーズ「學好好學」は「學好好學」と表現できます。プロジェクトでは、SMSアラ...

Docker での Redis 接続の急増をトラブルシューティングした実践的な記録

土曜日、本番サーバー上の Redis サーバーが利用できなくなり、エラー メッセージは次のようになり...

Nginx + consul + upsync を使用して動的負荷分散を実現する方法の詳細な説明

目次前提条件DNSドメイン名解決プロセス外部ネットワークマッピングnginxコア知識nginxとはア...

W3C チュートリアル (11): W3C DOM アクティビティ

ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...

Linux のパスワードを紛失した場合にリセットする方法

1. スタートアップメニューでは、カーソルを最初の行に移動します - eを押します 2. UTF-8...

Vue パッケージ化後の空白ページの解決策

1. vue-cli がプロジェクト パッケージを作成した後にページが空白になる問題の解決方法コマン...

LinuxシステムにDockerをインストールするプロセス

このブログでは、Docker をインストールするプロセスを簡単な手順で説明します。Docker のイ...

uniappとvueの違いの詳細な説明

目次1. シンプルなページの例2.uni-appはvueコンポーネントとミニプログラムネイティブコン...

WeChatアプレットでのwxsファイルの素晴らしい使い方をいくつか紹介します

目次序文応用フィルタードラッグファイル間での参照の受け渡しwxsはjsロジック層にパラメータを渡しま...

Vueのプラグインの仕組みとインストールの詳細を深く理解する

序文: Vue を使用する場合、多くの場合、カスタム プラグインをいくつか使用して記述し、 Vue....