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