MySQL は、日付と時刻を処理するために、DATETIME と TIMESTAMP という 2 つの非常によく似た型を提供しています。ほとんどの場合、どちらも問題ありませんが、場合によっては、それぞれに長所と短所があります。 日時DATETIME は、1001 から 9999 までのより広い時間範囲を持ち、精度は秒単位です。保存形式は、日付と時刻をパッケージ化し、YYYYMMDDhhmmss 形式の整数として保存します。この時間はタイムゾーンに依存せず、8 バイトのストレージ スペースを占有します。デフォルトでは、MySQL は DATETIME を 2021-06-02 18:35:23 などの順序付けられた明確な形式で表示します。これは ANSI 標準の日付と時刻の形式です。 タイムスタンプTIMESTAMP は、1970 年 1 月 1 日の午前 0 時からのグリニッジ標準時 (GMT) からの秒数を保存するタイムスタンプです。 Unix システムのタイムスタンプと同じです。 TIMESTAMP は保存に 4 バイトしか必要としないため、1970 年から 2038 年までのより短い時間範囲を表すことができます。 MySQL は、タイムスタンプと日付間の変換を完了するための FROM_UNIXTIME および UNIX_TIMESTAMP 関数を提供します。 MySQL バージョン 4.1 以降では、TIMESTAMP で表示される形式は DATETIME に似ていますが、TIMESTAMP の表示はタイム ゾーンによって異なります。 MySQL サーバー、オペレーティング システム、およびクライアント接続にはすべてタイム ゾーン設定があります。したがって、複数のタイムゾーンの時刻が保存されている場合、TIMESTAMP と DATETIME の差は大きくなる可能性があります。 TIMESTAMP は使用時にタイムゾーン情報を保持しますが、DATETIME は単にテキストを使用して時間を表します。 TIMESTAMP には追加機能があります。デフォルトでは、MySQL は、値が指定されていない場合は現在の時刻を使用して TIMESTAMP 列に挿入し、更新中に値が指定されていない場合は現在の時刻を使用してフィールドを更新します。次のテスト テーブルを例に挙げます。 テーブルt_time_testを作成します( id INT 主キー、 t_stamp タイムスタンプ、 t_datetime 日付時刻 ); MySQL によって指定されるデフォルト値は現在のタイムスタンプ CURRENT_TIMESTAMP であり、それに応じて更新されることを示す ON UPDATE CURRENT_TIMESTAMP があることがわかります。 t_time_test(id, t_datetime) に値を挿入する (1, NULL)、 (2, '2021-06-02 18:48:04'), (3、NULL); t_stamp 列に現在の時刻が自動的に入力されていることがわかります。 この機能により、IoT プログラムを通じてデータ更新時間フィールドを維持し、MySQL で完了させることができます。 選び方特性の観点から見ると、時間を保存するには DATETIME よりも効率的な TIMESTAMP の方が適している可能性があります。 Unix タイムスタンプを保存するために整数を使用する人もいますが、このアプローチには利点がなく、整数には追加の処理が必要になるため、お勧めできません。ただし、TIMESTAMP を使用して時間を保存しないように注意する必要がある状況がいくつかあります。
ミリ秒の時間を保存する方法通常、BIGINT を使用して時間を整数に変換して保存するか、浮動小数点数を使用して小数部分で 1 秒未満の精度で時間を表す必要があります。どちらの方法も実行可能です。もちろん、この時点では、フォーマット変換を行うにはアプリケーションのサポートが必要です。 結論安全性やセキュリティの観点から、DATETIME型を優先することをお勧めします。TIMESTAMPに比べてパフォーマンスが少し犠牲になりますが、TIMESTAMPの時間範囲は欠陥です。隠れた危険を放置しないでください。2038年になると、あなたの会社は上場企業になっている可能性があり、プログラマーは原因がわからないバグの洪水に遭遇し、会社の株価が急落する可能性があります。そして、このプログラマーを探し出し、彼が会社の元大物であり、現在の株主であり、そしてあなたが経済的自由を達成した人であることを知ってください。恥ずかしいと思いませんか? 上記はMySQLの時間タイプの選択の詳細です。MySQLの時間タイプの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: 見落とされがちなMETAタグの特殊効果(ページ遷移効果)
1. fastdfs の紹介1. fastdfsとは何かFastdfs は軽量のオープンソース分散フ...
問題/障害/シナリオ/要件Eve-ng の仮想マシン OVA のハードディスクは 38G しかないた...
123WordPress.com-HTML noscriptオブジェクトolオプションPパラントプレ...
CSS のFlex(彈性布局)すると、Web ページのレイアウトを柔軟に制御できます。Flex Fl...
これまでは、拡張子が .msi のファイル、つまり、完全なインストールが使用されていました。しかし、...
コードをコピーコードは次のとおりです。 <選択> <オプション値="&q...
jQueryプラグインは、参考のためにダッシュボードを実装します。具体的な内容は次のとおりです。一般...
目次問題の説明原因分析解決問題の説明最近、奇妙な問い合わせを受けました。更新ステートメントはエラーな...
私は最近、YouTube の CSS アニメーション効果チュートリアル シリーズをフォローしています...
この記事では、例を使用して、MySQL インデックス カーディナリティの概念と使用方法を説明します。...
新しいプロジェクトでは、axios によって重複した送信を防ぐことができますが、古いプロジェクト (...
準備する1. 必要なインストールパッケージをダウンロードするhttps://www.php.net/...
1. MySQLデータベースを作成する1. データベース構文を作成する --「testdb」という名...
HTML タグには、ページのタイトルを処理するための特別なタグがあります。これらは h1、h2、h3...
目次1. Vue スキャフォールディングをインストールする2. プロジェクトを作成する3.1 プロジ...