MySQLで現在時刻から○日後のデータを作る

テストデータを作る際に「現在時刻 ± X日」のデータを登録したかったのでSQLのみで実現する方法を調べた。

MySQL5.7で確認。

DATE_SUB, DATE_ADDとINTERVALを組み合わせることで実現できる。

INSERT INTO
    `posts` (
        `title`,
        `slug`,
        `published_at`
    )
VALUES
    (
        'post title 1',
        'test1',
        DATE_SUB(NOW(), INTERVAL 1 DAY) -- 1日前
    ),
    (
        'post title 2',
        'test2',
        DATE_ADD(NOW(), INTERVAL 1 DAY) -- 1日後
    );

参考