ホームページ >データベース >mysql チュートリアル >MySQL で今日のタイムスタンプを持つレコードを取得するにはどうすればよいですか?

MySQL で今日のタイムスタンプを持つレコードを取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-13 09:20:02845ブラウズ

How to Retrieve Records with Today's Timestamp in 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() 関数は、タイムスタンプの日付部分を返し、時間情報を削除します。
  • CURDATE() 関数は、現在の日付を MySQL の日付値として返します。

警告:

このクエリは意図した結果を達成しますが、そうではない可能性があります。最適なパフォーマンスを発揮します。タイムスタンプ カラムで DATE() を使用すると、MySQL がそのカラムのインデックスを効率的に使用できなくなる可能性があります。

より効率的な解決策として、専用の日付カラムを作成し、そのカラムにタイムスタンプの日付部分を格納できます。 。これにより、MySQL はクエリを高速化するために日付列のインデックスを使用できるようになります。

専用の日付列を作成し、その値を更新する方法の例を次に示します。

ALTER TABLE `table` ADD COLUMN `date` DATE NOT NULL;
UPDATE `table` SET `date` = DATE(`timestamp`);

以上がMySQL で今日のタイムスタンプを持つレコードを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。