MySQL初心者でも安心!今日の日付を取得する方法と1日加算する方法
MySQLで現在時刻に1日加算するには、いくつかの方法があります。ここでは、最も一般的で使いやすい2つの方法をご紹介します。
方法1:DATE_ADD関数を使用する
解説
DATE_ADD関数は、指定された日付に間隔を加算する関数です。現在時刻に1日加算するには、以下のように使用します。
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
出力例
2024-04-18 00:00:00
方法2:NOW()関数とINTERVALキーワードを使用する
NOW()関数は現在時刻を返し、INTERVALキーワードは間隔を指定します。現在時刻に1日加算するには、以下のように使用します。
SELECT NOW() + INTERVAL 1 DAY;
2024-04-18 00:00:00
補足
- 上記のクエリは、現在時刻がDATETIME型であることを前提としています。現在時刻がDATE型の場合は、以下のように変換する必要があります。
SELECT DATE_ADD(CAST(NOW() AS DATETIME), INTERVAL 1 DAY);
- 上記のクエリは、1日加算した時刻のみを返します。日付のみを取得したい場合は、以下のようにEXTRACT関数を使用します。
SELECT EXTRACT(DAY FROM DATE_ADD(NOW(), INTERVAL 1 DAY));
- 上記以外にも、さまざまな方法で現在時刻に1日加算することができます。ご自身の用途に合った方法を選択してください。
- 複雑なクエリを作成する場合は、SQLインジェクションなどのセキュリティ対策に注意する必要があります。
ここでは、以下の状況を想定します。
- 現在時刻は2024年4月17日0時0分0秒です。
- テーブル
mytable
には、created_at
という名前の DATETIME 型の列があります。 - このテーブルを使用して、本日作成されたレコードの数をカウントします。
求められる処理
- 現在時刻から1日前の日時を取得する
created_at
列が取得した日時以降のレコード数をカウントする
SELECT COUNT(*)
FROM mytable
WHERE created_at >= DATE_ADD(NOW(), INTERVAL 1 DAY);
DATE_ADD(NOW(), INTERVAL 1 DAY)
は、現在時刻から1日前の日時を取得します。WHERE created_at >= DATE_ADD(NOW(), INTERVAL 1 DAY)
は、created_at
列の値が取得した日時以降のレコードのみを抽出します。COUNT(*)
は、抽出されたレコードの数をカウントします。
10
説明
上記のクエリを実行すると、本日作成されたレコードが10件あることがわかります。
- 上記のクエリは、本日作成されたレコードをカウントする例です。ご自身の目的に合わせて、クエリを変更してください。
MySQLで現在時刻に1日加算するその他の方法
方法3:ADDTIME関数を使用する
SELECT ADDTIME(NOW(), '1:00:00');
2024-04-18 00:00:00
方法4:TIMESTAMPDIFF関数を使用する
TIMESTAMPDIFF関数は、2つの時刻値の差を計算する関数です。現在時刻と1日後の時刻値の差を計算することで、現在時刻に1日加算することができます。以下は、その例です。
SELECT DATE_ADD(NOW(), INTERVAL TIMESTAMPDIFF(DAY, NOW(), NOW() + INTERVAL 1 DAY) DAY);
2024-04-18 00:00:00
方法5:STR_TO_DATE関数とDATE_ADD関数を使用する
STR_TO_DATE関数は、文字列を日付に変換する関数です。DATE_ADD関数と組み合わせて使用することで、現在時刻に1日加算することができます。以下は、その例です。
SELECT DATE_ADD(STR_TO_DATE('%Y-%m-%d %H:%i:%s', NOW()), INTERVAL 1 DAY);
2024-04-18 00:00:00
sql mysql datetime