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

MySQLでnow()に1日を加算する方法|intervalとdate_add()の使い方を解説

MySQLでは、現在の日時(now())に1日を加算したいケースがよくあります。たとえば「有効期限を翌日に設定したい」「翌日の予約日時を取得したい」といった場面です。この記事では、now()+1 dayという考え方を実現するための具体的なSQLの書き方を、実行例つきでわかりやすく解説します。

基本の書き方:now() + interval 1 day

「now()に1日を足す」という処理は、intervalを使って次のように記述できます。

now()+interval 1 day;

また、同じ処理はMySQL標準のdate_add()関数を使っても表現できます。

date_add(now(),interval 1 day);

どちらの書き方でも結果は同じになります。可読性やチームのコーディング規約に合わせて選ぶとよいでしょう。

SELECT文での実行例①:now() + interval 1 day

それでは、実際にSELECT文で上記の概念を試してみましょう。クエリは次のとおりです。

mysql> select now()+ interval 1 day;

実行すると、現在日時に1日が加算された結果が返されます。

+-----------------------+
| now()+ interval 1 day |
+-----------------------+
| 2018-11-23 15:43:10   |
+-----------------------+
1 row in set (0.05 sec)

SELECT文での実行例②:date_add()関数を使う方法

続いて、date_add()関数を使って現在日時に1日を加算する例を見てみましょう。

mysql> select date_add(now(),interval 1 day);

出力結果は以下のとおりです。

+--------------------------------+
| date_add(now(),interval 1 day) |
+--------------------------------+
| 2018-11-23 15:45:43            |
+--------------------------------+
1 row in set (0.00 sec)

日付だけを表示したい場合:curdate()を使う

時刻情報は不要で、日付だけを表示したい場合は、now()の代わりにcurdate()(現在の日付のみを返す関数)を使用します。

curdate()+interval 1 day;

もちろん、こちらもdate_add()関数と組み合わせて書くことができます。

date_add(curdate(),interval 1 day);

curdate() + interval 1 day の実行例

mysql> select curdate()+interval 1 day;

curdate()を使うことで、時刻を含まない「1日加算された日付」だけが出力されます。

+--------------------------+
| curdate()+interval 1 day |
+--------------------------+
| 2018-11-23               |
+--------------------------+
1 row in set (0.00 sec)

date_add(curdate(), ...) の実行例

mysql> select date_add(curdate(),interval 1 day);

date_add()を使った場合も、同様に日付のみの結果が得られます。

+------------------------------------+
| date_add(curdate(),interval 1 day) |
+------------------------------------+
| 2018-11-23                         |
+------------------------------------+
1 row in set (0.00 sec)

まとめ

  • 現在日時に1日を加算するには now()+interval 1 day を使う
  • date_add(now(), interval 1 day) でも同じ結果が得られる
  • 日付だけが必要な場合は curdate() に置き換える
  • intervalの値を変更すれば、2日後・1週間後など柔軟に計算できる

なお、intervalの部分は「1 week」「1 month」「1 year」などにも変更できるため、さまざまな期間計算に応用できます。用途に応じて使い分けてみてください。

  1. MySQLで同じ日付のレコードの値を合計する方法(GROUP BYとDATE関数の使い方)

    はじめに MySQLでは、GROUP BY句とDATE()関数を組み合わせることで、同じ日付(日単位)のレコードに含まれる値を簡単に合計できます。datetime型のカラムには時刻情報も含まれていますが、DATE()関数を使えば日付部分だけを取り出してグループ化できるのがポイントです。 ここでは、実際にサンプルテーブルを作成し、同じ日の値を合計する手順を順番に解説していきます。 1. テーブルを作成する まず、以下のコマンドでテーブルを作成しましょう。今回は購入日時(PurchaseDate)と商品価格(ProductPrice)を持つテーブルを用意しました。 mysql> create

  2. 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)レコードの挿入次に、