時刻を保存するために適切な 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インデックスの基本構文

インデックスはソートされたデータ構造です。 where 条件での検索や order by 条件での並...

Vueのインストール方法の紹介

目次1. グローバルに登録されたコンポーネント2. グローバルカスタム指示vue 、新しいプラグイン...

Linux運用保守ツールSupervisor(プロセス管理ツール)のインストールと使用

1. はじめにSupervisor は Python で開発された汎用プロセス管理プログラムです。通...

MySQL のマスタースレーブレプリケーションと読み取り書き込み分離の原理と使用法の詳細な説明

この記事では、例を使用して、MySQL マスター/スレーブ レプリケーションと読み取り/書き込み分離...

Linux seqコマンドの使い方

1. コマンドの紹介seq (シーケンス) コマンドは、指定されたステップ サイズに従って、開始番号...

HTML DOM入門_PowerNode Javaアカデミー

DOMとは何ですか? JavaScript を使用すると、HTML ドキュメント全体を再構築できます...

TomcatとJDKのバージョンの対応と各Tomcatバージョンの機能

Apache Tomcat は、Java Servlet および Java Server Pages...

Tomcat でのコネクタ構成

JBoss は Tomcat を Web コンテナとして使用するため、JBoss の Web コンテ...

Vueはキャンバスの手書き入力を使用して中国語を認識します

効果画像: 序文:最近、屋外の大画面プロジェクトに取り組んでいました。システムの入力方法は使いにくか...

jQueryのチェーンプログラミングスタイルの詳細な例

チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...

Oracle の MySQL バージョンでユーザー Scott のテーブル ステートメントを作成する例

概要: Oracle scottユーザーには4つのテーブルがあり、実験やデータ検証に便利です。現在は...

jQueryはhide()とtoggle()関数を使用してカメラブランド表示の非表示機能を実現します。

最近、jQuery を学習しているときに、show()、hide()、toggle() 関数に出会い...

MySQLはストアドプロシージャを使用して数百万のデータを素早く追加します。サンプルコード

序文インデックスを追加した場合と追加しなかった場合の違いを反映するには、数百万のデータを使用する必要...

WeChatアプレットはキャンバスを使用して時計を描画します

この記事では、キャンバスを使用してWeChatアプレットに時計を描く具体的なコードを参考までに共有し...

JavaScript の parseInt() の魔法についての簡単な説明

原因このブログを書いた理由は、今日Leetcodeの日課問題をやっていたからです。文字列を整数(at...