MySQLで日付を減算する (Translation: Subtracting dates in MySQL)
MySQLで現在日時から30日を引く方法
MySQLでは、DATE_SUB()
関数を使用して、現在日時から30日を引くことができます。
構文
DATE_SUB(current_timestamp(), INTERVAL 30 DAY)
INTERVAL 30 DAY
: 30日間のインターバルを指定します。current_timestamp()
: 現在の日時を取得します。DATE_SUB()
: 日時を減算する関数です。
例
SELECT DATE_SUB(current_timestamp(), INTERVAL 30 DAY) AS thirty_days_ago;
このクエリを実行すると、現在の日時から30日前の日時が取得されます。
他の単位の使用
INTERVAL
句では、以下の単位を使用することもできます。
SECOND
MINUTE
HOUR
DAY
MONTH
YEAR
例えば、30時間前の日時を取得するには、次のようにします。
SELECT DATE_SUB(current_timestamp(), INTERVAL 30 HOUR) AS thirty_hours_ago;
MySQLで日付を減算する例
30日前の日時を取得する
SELECT DATE_SUB(current_timestamp(), INTERVAL 30 DAY) AS thirty_days_ago;
AS thirty_days_ago
: 結果をエイリアスthirty_days_ago
で指定します。DATE_SUB(current_timestamp(), INTERVAL 30 DAY)
: 現在日時から30日を引いた日時を計算します。
SELECT DATE_SUB(current_timestamp(), INTERVAL 1 YEAR) AS one_year_ago;
SELECT DATE_SUB(current_timestamp(), INTERVAL 2 HOUR) AS two_hours_ago;
特定の日時からの減算
SELECT DATE_SUB('2023-01-01', INTERVAL 1 MONTH) AS one_month_before_2023_01_01;
'2023-01-01'
: 指定した日時を文字列で表します。
複数の単位を組み合わせる
SELECT DATE_SUB(current_timestamp(), INTERVAL 1 YEAR 2 MONTH 3 DAY) AS one_year_two_months_three_days_ago;
- 複数の単位を組み合わせることができます。
DATE_ADD()関数を使用する
SELECT DATE_ADD(current_timestamp(), INTERVAL -30 DAY) AS thirty_days_ago;
TIMESTAMPADD()関数を使用する
TIMESTAMPADD()
関数を使用して、特定の単位で日時を操作することもできます。
SELECT TIMESTAMPADD(DAY, -30, current_timestamp()) AS thirty_days_ago;
-30
: 30日分減算します。DAY
: 日単位で操作します。
ストアドプロシージャを使用する
複雑な日付計算が必要な場合は、ストアドプロシージャを使用することができます。
CREATE PROCEDURE subtract_30_days()
BEGIN
SELECT DATE_SUB(current_timestamp(), INTERVAL 30 DAY) AS thirty_days_ago;
END;
このストアドプロシージャを呼び出すには、次のようにします。
CALL subtract_30_days();
ユーザー定義関数を使用する
より柔軟な日付計算が必要な場合は、ユーザー定義関数を作成することができます。
CREATE FUNCTION subtract_days(days INT) RETURNS DATE
BEGIN
RETURN DATE_SUB(current_timestamp(), INTERVAL days DAY);
END;
この関数を呼び出すには、次のようにします。
SELECT subtract_days(30) AS thirty_days_ago;
mysql