MySQLで日付から1日を引く方法|DATE_SUB関数の使い方
MySQLで日付から1日を引く(前日の日付を取得する)には、DATE_SUB() 関数を使用します。この記事では、実際にテーブルを作成し、DATE_SUB() を使って日付から1日を減算する手順をわかりやすく解説します。
サンプルテーブルの作成
まず、タイムスタンプ型のカラムを持つテーブルを作成します。以下のSQLを実行してください。
mysql> create table DemoTable
-> (
-> AdmissionDate timestamp
-> );
Query OK, 0 rows affected (1.05 sec)
レコードの挿入
次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable values('2019-01-01');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('2018-12-31');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('2017-03-13');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2019-01-02');
Query OK, 1 row affected (0.08 sec)登録データの確認
SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
このクエリを実行すると、以下のような結果が出力されます。
+---------------------+
| AdmissionDate |
+---------------------+
| 2019-01-01 00:00:00 |
| 2018-12-31 00:00:00 |
| 2017-03-13 00:00:00 |
| 2019-01-02 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)
DATE_SUB()で1日前の日付を取得する
ここが本題です。日付から1日を引くには、以下のように DATE_SUB() 関数を使います。第1引数に対象の日付カラム、第2引数に「INTERVAL 1 DAY」を指定します。
mysql> select date_sub(AdmissionDate,interval 1 day) from DemoTable;
実行結果は以下のとおりです。各日付が1日前にずれていることが確認できます。
+----------------------------------------+
| date_sub(AdmissionDate,interval 1 day) |
+----------------------------------------+
| 2018-12-31 00:00:00 |
| 2018-12-30 00:00:00 |
| 2017-03-12 00:00:00 |
| 2019-01-01 00:00:00 |
+----------------------------------------+
4 rows in set (0.00 sec)
補足:INTERVALの単位を変えれば柔軟に計算できる
DATE_SUB() の INTERVAL は「DAY」以外にもさまざまな単位を指定できます。たとえば以下のように使えます。
- 1週間前:
date_sub(AdmissionDate, interval 1 week) - 1ヶ月前:
date_sub(AdmissionDate, interval 1 month) - 1年前:
date_sub(AdmissionDate, interval 1 year) - 複数日:
date_sub(AdmissionDate, interval 7 day)(7日前)
また、逆に日付を加算したい場合は DATE_ADD() 関数を使用します。日付の加減算は集計処理やレポート生成などでよく使うテクニックなので、ぜひ覚えておきましょう。
-
MySQLで特定の列の値から数値を減算する方法
MySQLのテーブル内にある特定の列の値から数値を減算したい場合は、UPDATE文を使って該当する行の値を更新するだけで実現できます。この記事では、実際にテーブルを作成し、データを挿入して、列の値から数値を減算する手順を順番に解説します。 1. テーブルを作成する まず、減算対象となる整数型(int)の列を持つテーブルを作成しましょう。 mysql> create table DemoTable1372 -> ( -> Value int &n
-
MySQLのWHERE句で日付の差を計算して行を抽出する方法(TIMESTAMPDIFFの使い方)
MySQLでは、TIMESTAMPDIFF() 関数を使うことで、日時同士の差分を計算し、その結果に基づいてWHERE句で行を絞り込むことができます。ここでは、指定した日時との差が5分以内のレコードを抽出する例を紹介します。サンプルテーブルの作成まず、datetime型のカラムを持つテーブルを作成しましょう。mysql> create table demo42 -> ( -> start_date datetime -> ); Query OK, 0 rows affected (0.77 sec)テーブルへのデータ挿入次に、INSERT文を使っていくつかの日時データを