MySQLのSUBDATE()
の違い およびDATE_SUB()
関数は、ADDDATE()
の違いとまったく同じです。 およびDATE_ADD()
関数。 1つの関数では2つの異なる構文形式が可能ですが、もう1つの関数では1つだけが可能です。
この記事は違いを示しています。
構文
各関数の構文は次のとおりです。
DATE_SUB()
DATE_SUB()
構文は次のようになります。
DATE_SUB(date,INTERVAL expr unit)
これは日付値を受け入れ、その後にINTERVAL
が続きます キーワードと、最初の引数で指定された日付から減算する式と単位。
SUBDATE()
SUBDATE()
構文では2つの形式が可能です。次のいずれかのフォームを使用できます。
SUBDATE(date,INTERVAL expr unit)
または
SUBDATE(expr,days)
最初の形式は、DATE_SUB()
とまったく同じです。 構文、およびこの構文を使用する場合、SUBDATE()
関数はDATE_SUB()
の同義語です 。
ただし、2番目の構文形式は、SUBDATE()
を使用する場合にのみ使用できます。 関数であり、簡単な方法で日付から減算する日数を指定できます。
例
両方の関数を使用して、同じ日付から特定の日数を減算する例を次に示します。
SET @date = '2023-12-10'; SELECT DATE_SUB(@date, INTERVAL 5 DAY) AS 'DATE_SUB', SUBDATE(@date, INTERVAL 5 DAY) AS 'SUBDATE 1', SUBDATE(@date, 5) AS 'SUBDATE 2';
結果:
+------------+------------+------------+ | DATE_SUB | SUBDATE 1 | SUBDATE 2 | +------------+------------+------------+ | 2023-12-05 | 2023-12-05 | 2023-12-05 | +------------+------------+------------+
ただし、DATE_SUB()
で代替構文形式を使用しようとすると エラーが発生します。
SET @date = '2023-12-10'; SELECT DATE_SUB(@date, 5) AS 'DATE_SUB 2';
結果:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5) AS 'DATE_SUB 2'' at line 1
そしてもちろん、このエラーの理由はDATE_SUB()
その構文をサポートしていません。
この2番目の構文形式は、日の減算にのみ使用できることに注意してください。 日付から。他の単位(たとえば、月)を引く必要がある場合は、最初の構文を使用する必要があります。