MySQLで現在の日時から10日を引く方法【DATE_SUB関数の使い方】
MySQLでは、現在の日時から指定した日数を簡単に減算できます。この記事では、now()関数とDATE_SUB()関数を使って、現在の日時から10日前の日時を取得する方法を解説します。
1. 現在の日時を取得する
まず、now()関数を使って現在の日時を取得しましょう。
mysql> select now();
実行結果は以下のとおりです。
+---------------------+ | now() | +---------------------+ | 2018-11-01 19:55:56 | +---------------------+ 1 row in set (0.00 sec)
2. DATE_SUB()関数で10日を引く
現在の日時から10日を減算するには、DATE_SUB()関数を使用します。基本構文は以下のとおりです。
select DATE_SUB(now(), interval integer_value day);
integer_valueの部分に、減算したい日数を指定します。実際に現在の日時から10日を引いてみましょう。
mysql> select DATE_SUB(now(), interval 10 day);
実行結果:
+---------------------------------+ | DATE_SUB(now(), interval 10 day) | +---------------------------------+ | 2018-10-22 19:56:07 | +---------------------------------+ 1 row in set (0.00 sec)
このように、2018年11月1日から10日を引いた「2018年10月22日」が返されていることがわかります。
3. 応用:INTERVALの単位を変える
DATE_SUB()関数は、日数以外にもさまざまな単位で減算できます。
- 1時間前を取得:
DATE_SUB(now(), interval 1 hour) - 1か月前を取得:
DATE_SUB(now(), interval 1 month) - 1年前を取得:
DATE_SUB(now(), interval 1 year)
また、逆に日時を加算したい場合はDATE_ADD()関数を使うことで、同じ書式で日時の加算が可能です。日付の計算を自動化したい場合に非常に便利な関数なので、ぜひ活用してください。
-
MySQLでDATETIME型から日付のみを抽出する方法
MySQLのDATETIME型カラムから日付部分だけを取り出したい場合、DATE_FORMAT()関数と書式指定子を組み合わせるのが便利です。使用する主な書式指定子は以下の通りです。%d … 日(01〜31)%m … 月(01〜12)%Y … 年(4桁)それでは、実際にサンプルテーブルを作成して確認してみましょう。1. テーブルの作成mysql> create table DemoTable ( AdmissionDate datetime ); Query OK, 0 rows affected (0.52 sec)DATETIME型のカラム「AdmissionDate」を持つ
-
MySQLで現在の日付から1日以上の行を抽出する方法(INTERVALの使い方)
現在の日時を基準に「1日前以降」のデータを取得したい場合は、MySQLのINTERVALを使うと簡単に実現できます。この記事では、サンプルテーブルを作成し、実際に条件に合う行を抽出するまでの手順を順番に解説します。 1. 現在の日付を確認する まず、CURDATE()関数で現在の日付を確認しておきましょう。 mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-11-29 | +------------+ 1 row in set (0.00 sec) 現在の日付は「2019-11-29」