MySQLは時間を保存する正しい方法を選択します

データベースライターを構築しても、日付と時刻の使用は避けられません。データベースには、タイムスタンプや日付時刻などのさまざまな日付と時刻のフィールド、UNIXタイムスタンプを格納するためのintの使用などがあります。

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

次に、それらの特性を段階的に分析して、自分のニーズに応じて格納する適切なフィールドタイプを選択します(親が隣人や子供を自分たちと比較するのと同じように、長所と短所が比較されます)。

日時とタイムスタンプ

  1. 日時は、カレンダーの時刻と特定の時刻を参照する時計の時刻の組み合わせに似ています。
  2. estampの方が記録時間に適しています。たとえば、ドンバ地区の時間は現在2016-08-02 10:35:52、日本にいます(ドンジウ地区の時間は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. 直感的な表示、問題が発生した場合のデバッグが容易で、多くの長い整数よりもはるかに優れています。
  2. intは1970年から蓄積されていますが、intがサポートする範囲は1901-12-13から2038-01-19 03:14:07です。より大きな範囲が必要な場合は、bigIntに設定する必要があります。ただし、この時間にはミリ秒は含まれていません。ミリ秒が必要な場合は、それらも浮動小数点数として定義する必要があります。日時とタイムスタンプは、本来6マイクロ秒です。
  3. タイムスタンプには、上記の項目2と同じ独自のタイムゾーン変換があります。
  4. ユーザーのフロントエンドによって入力される時刻は、通常は日付型です。intを格納する場合は、フェッチして処理する前に格納する必要があります。

まとめ

  1. タイムスタンプレコードは頻繁に更新/作成/投稿/ログ時間/購入時間/ログイン時間/登録時間などを更新し、最近の時間、十分な時間、海外購入やビジネスなどの自動タイムゾーン処理が海外に拡大する可能性があります
  2. datetimeは、サーバーがスケジュールされたタスクやフィットネス運動時間などを実行する時間などの固定時間を記録します。どのタイムゾーンでも、何かを行うには固定時間が必要です。タイムスタンプを超えた時間。タイムゾーンが必要な場合は、タイムゾーンの処理を覚えておく必要があります。
  3. UNIXのタイムスタンプは、タイムスタンプと日時ができることの範囲に関しては、使用するのにあまり便利ではありません
  4. タイムゾーンを考慮しない場合、または独自のタイムゾーン計画を持っている場合は、好きなものを自由に選択してください。
  5. laravel国際的枠組みはそう、行でプログラマ、データベースの設計基準の利便性のために設計されてcreated_at updated_at使用タイムスタンプが理解できます。
  6. 範囲とタイムゾーンの問題を解決する時間タイプはありますか?これは不可能です、TinyInt BigIntはありませんか?MySQLはデータベースフィールドの変更を許可します。
  7. 年/月/日などの複数のフィールドを使用して誕生日を保存できるため、特定の日に誕生日を持つユーザーを簡単に見つけることができます

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

おすすめ

転載: www.cnblogs.com/StivenYang/p/12751991.html