sql >> データベース >  >> RDS >> Mysql

MySQLのADDDATE()とDATE_ADD():違いは何ですか?

    MySQLを使用する場合、ADDDATE()を使用するオプションがあります およびDATE_ADD() 特定の日付に特定の時間間隔を追加したいときはいつでも機能します。これらの機能はどちらも同じことをしますが、違いが1つあります。

    この記事では、ADDDATE()の違いについて説明します およびDATE_ADD() MySQLで。

    構文

    これら2つの関数の違いは、構文にあります。 1つの関数では2つの異なる形式が可能ですが、もう1つの関数では1つの形式のみが可能です。

    DATE_ADD()

    DATE_ADD() 構文は次のようになります。

    DATE_ADD(date,INTERVAL expr unit)

    これは日付値を受け入れ、その後にINTERVALが続きます キーワードと、最初の引数で指定された日付に追加する式と単位。

    ADDDATE()

    ADDDATE() 構文では2つの形式が可能です。次のいずれかのフォームを使用できます。

    ADDDATE(date,INTERVAL expr unit)

    または

    ADDDATE(expr,days)

    最初の形式は、DATE_ADD()とまったく同じです。 構文。実際、この構文を使用する場合、ADDDATE() 関数はDATE_ADD()の同義語です 。

    ただし、これは2つの関数を区別する構文の2番目の形式です。この2番目の形式は、ADDDATE()を使用している場合にのみ使用できます 関数であり、簡単な方法で日付に追加する日数を指定できます。

    2つの形式の違いを示す例を次に示します。

    SET @date = '2020-10-01';
    SELECT 
        DATE_ADD(@date, INTERVAL 2 DAY) AS 'DATE_ADD',
        ADDDATE(@date, INTERVAL 2 DAY) AS 'ADDDATE 1',
        ADDDATE(@date, 2) AS 'ADDDATE 2';

    結果:

    +------------+------------+------------+
    | DATE_ADD   | ADDDATE 1  | ADDDATE 2  |
    +------------+------------+------------+
    | 2020-10-03 | 2020-10-03 | 2020-10-03 |
    +------------+------------+------------+

    ただし、ADD_DATE()で2番目の形式を使用しようとすると 、エラーが発生します:

    SET @date = '2020-10-01';
    SELECT DATE_ADD(@date, 2) AS 'DATE_ADD 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 '2) AS 'DATE_ADD 2'' at line 1

    これは、この関数がその構文をサポートしていないためです。


    1. pg_escape_stringは正確に何をしますか?

    2. MySqlでアポストロフィ(')をエスケープする方法は?

    3. MariaDBINTERSECTオペレーターの説明

    4. PHPを使用してSQLサーバーに接続する方法