MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで昨日の日付を取得する方法|subdate()関数の使い方を実例付きで解説

MySQLで昨日の日付を取得したい場合は、subdate()関数を使うのが便利です。この記事では、基本的な構文から、実際にテーブルを作成して動作を確認するまでの手順をサンプルコードとともにわかりやすく解説します。

subdate()関数の基本構文

日時カラムから1日前の日付を取得するには、以下のように記述します。

SELECT SUBDATE(日時カラム名, INTERVAL 1 DAY) AS 別名 FROM テーブル名;

サンプルテーブルの作成

まずは動作確認用に、datetime型のカラムを持つテーブルを作成します。

mysql> CREATE TABLE YesterdayDateDemo (
    ->   VisitedDateTime DATETIME
    -> );
Query OK, 0 rows affected (0.59 sec)

テストデータの挿入

続いて、INSERT文を使って日時データを挿入します。現在日時を返すnow()関数と、任意の日時文字列を組み合わせて登録してみましょう。

mysql> INSERT INTO YesterdayDateDemo VALUES(NOW());
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO YesterdayDateDemo VALUES('2012-12-26 13:24:35');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO YesterdayDateDemo VALUES('2013-10-22 12:20:32');
Query OK, 1 row affected (0.16 sec)

登録データの確認

SELECT文ですべてのレコードを表示して、正しく挿入されたかを確認します。

mysql> SELECT * FROM YesterdayDateDemo;

実行結果は以下のとおりです。

+---------------------+
| VisitedDateTime     |
+---------------------+
| 2018-12-18 14:22:48 |
| 2012-12-26 13:24:35 |
| 2013-10-22 12:20:32 |
+---------------------+
3 rows in set (0.00 sec)

昨日の日付を取得するクエリ

それでは、subdate()関数を使って各レコードの1日前の日付を取得してみます。「INTERVAL 1 DAY」を指定することで、日時からちょうど1日分を減算できます。

mysql> SELECT SUBDATE(VisitedDateTime, INTERVAL 1 DAY) AS YesterdayDate
    -> FROM YesterdayDateDemo;

実行結果:

+---------------------+
| YesterdayDate       |
+---------------------+
| 2018-12-17 14:22:48 |
| 2012-12-25 13:24:35 |
| 2013-10-21 12:20:32 |
+---------------------+
3 rows in set (0.00 sec)

このように、各レコードの日時から1日前の日時が取得できていることがわかります。

補足:今日の日付から昨日を求める場合

テーブルの値ではなく「本日の日付」を基準に昨日の日付を求めたい場合は、CURDATE()関数と組み合わせると簡単です。

mysql> SELECT SUBDATE(CURDATE(), INTERVAL 1 DAY) AS Yesterday;
-- 結果例:2024-06-30

また、同様の処理はDATE_SUB()関数でも可能です。SUBDATE()はDATE_SUB()の別名(シノニム)として動作するため、好みに応じて使い分けるとよいでしょう。

まとめ

MySQLで昨日の日付を取得するには、SUBDATE(対象の日時, INTERVAL 1 DAY)を使用します。datetime型・date型のどちらにも対応でき、現在日時を基準にする場合はCURDATE()との組み合わせが便利です。ログ集計やレポート作成など、「前日のデータだけを抽出したい」といった場面でぜひ活用してください。

  1. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected

  2. MySQLで日付形式を変換する方法|STR_TO_DATE()関数の使い方を解説

    MySQLでは、VARCHAR型などで保存された文字列の日付データを、正しい日付・時刻形式に変換したいケースがよくあります。そんなときに活躍するのが STR_TO_DATE() 関数です。この記事では、実際のSQL例とともに具体的な使い方を解説します。サンプルテーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable2010 ( DueDate varchar(20) ); Query OK, 0 rows affected (0.68 sec)テストデータの挿入INSERT文を使って、「日/月/年 時:分:秒」