ホームページ >データベース >mysql チュートリアル >MySQL で今日のタイムスタンプを持つレコードを取得するにはどうすればよいですか?
当日のタイムスタンプを持つ行を選択する方法
データベース管理システムでは、データ レコードがいつ記録されたかを追跡するために、データ レコードのタイムスタンプを保存するのが一般的です。作成または変更されました。ただし、タイムスタンプを含むテーブルからデータを取得する必要がある場合、特定の日付に基づいてレコードを選択する際に問題が発生する可能性があります。
問題ステートメント
データベースがあります。タイムスタンプ列を含むテーブルを作成し、当日に作成されたレコードのみを取得したいとします。最初に以下のクエリを使用しましたが、今日の日付だけでなく、過去 24 時間のレコードが返されることに気付きました。
SELECT * FROM `table` WHERE (`timestamp` > DATE_SUB(now(), INTERVAL 1 DAY));
Solution
To select rows that has時間を無視して当日のタイムスタンプを取得するには、次のクエリを使用できます。
SELECT * FROM `table` WHERE DATE(`timestamp`) = CURDATE()
警告:
このクエリは意図した結果を達成しますが、そうではない可能性があります。最適なパフォーマンスを発揮します。タイムスタンプ カラムで DATE() を使用すると、MySQL がそのカラムのインデックスを効率的に使用できなくなる可能性があります。
より効率的な解決策として、専用の日付カラムを作成し、そのカラムにタイムスタンプの日付部分を格納できます。 。これにより、MySQL はクエリを高速化するために日付列のインデックスを使用できるようになります。
専用の日付列を作成し、その値を更新する方法の例を次に示します。
ALTER TABLE `table` ADD COLUMN `date` DATE NOT NULL; UPDATE `table` SET `date` = DATE(`timestamp`);
以上がMySQL で今日のタイムスタンプを持つレコードを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。