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

推薦する

VMware ESXi6.7 の簡単なセットアップ(画像とテキスト付き)

1. VMware vSphere の概要VMware vSphere は、業界をリードする最も信...

MySQL 8.0.11 Community Green Edition の Windows 用インストール手順図

このチュートリアルでは、インストールに最新の MySQL コミュニティ グリーン バージョンである ...

MySQL の最適化: 高品質の SQL 文を書く方法

序文インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質にば...

Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図

公式サイトから MySQL をダウンロードしてインストールし、クライアントにログインするにはどうすれ...

MySQLクエリ文を書き換える3つの戦略

目次複雑なクエリとステップバイステップのクエリクエリステートメントを分割する共同クエリの分解問題のあ...

読めばわかるVueの8つのヒント

1. v-forでは常に:keyを使用するデータを操作する必要があるときにプログラムを一定かつ予測可...

vue-router を遅延ロードする 3 つの方法のまとめ

遅延読み込みを使用しない 'vue' から Vue をインポートします。 '...

MySQLからMariaDBへのスムーズな移行のための詳細な手順

1. MariaDB と MySQL の紹介1. MariaDB の紹介MariaDB は、MySQ...

Flinkのフォールトトレラントメカニズムに関する簡単な説明:ジョブ実行とデーモン

目次1. ジョブ実行のフォールトトレランス1.1 タスクフェイルオーバー戦略1.2 ジョブ再開戦略2...

Vue3 がデータ監視を実装するためにプロキシを使用する理由の分析

Vue データの双方向バインディング原則ですが、この方法には欠点があり、配列とオブジェクトの部分的な...

js でパズルゲームを実装する

この記事では、パズルゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内容は...

JavaScript 文字列オブジェクトメソッド

目次文字列オブジェクトのメソッド方法 1: indexOf() (推奨)方法 2: search()...

WeChatアプレットが計算機機能を実装

WeChatミニプログラムはますます人気が高まっています。多くの大学生が独学で学んでいるのも見てきま...

docker compose を使ってワンクリックで分散構成センター Apollo を展開するプロセスの詳細な説明

導入分散について話すときは、分散構成センター、分散ログ、分散リンク トラッキングなどについて考える必...

React Hooksの詳細な説明

目次フックとは何ですか?クラスコンポーネント機能コンポーネントフックが作られた理由要約するフックとは...