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

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() 関数を使用します。日付の加減算は集計処理やレポート生成などでよく使うテクニックなので、ぜひ覚えておきましょう。

  1. MySQLで特定の列の値から数値を減算する方法

    MySQLのテーブル内にある特定の列の値から数値を減算したい場合は、UPDATE文を使って該当する行の値を更新するだけで実現できます。この記事では、実際にテーブルを作成し、データを挿入して、列の値から数値を減算する手順を順番に解説します。 1. テーブルを作成する まず、減算対象となる整数型(int)の列を持つテーブルを作成しましょう。 mysql> create table DemoTable1372     -> (     -> Value int    &n

  2. MySQLのWHERE句で日付の差を計算して行を抽出する方法(TIMESTAMPDIFFの使い方)

    MySQLでは、TIMESTAMPDIFF() 関数を使うことで、日時同士の差分を計算し、その結果に基づいてWHERE句で行を絞り込むことができます。ここでは、指定した日時との差が5分以内のレコードを抽出する例を紹介します。サンプルテーブルの作成まず、datetime型のカラムを持つテーブルを作成しましょう。mysql> create table demo42 -> ( -> start_date datetime -> ); Query OK, 0 rows affected (0.77 sec)テーブルへのデータ挿入次に、INSERT文を使っていくつかの日時データを