UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#031 SQL DATE_ADD関数で1ヶ月前、1ヶ月後を取得する。

記入日:2023-02-08 編集日:2023-02-08

SQL見るだけクエリ。今回はデータとして保存されている日付データから、DATE_ADD関数を使って、1ヶ月前、1ヶ月後を取得してみようと思います。契約期限の1ヶ月前に、お知らせのメールを送る際のデータ取得などに使えますね。

この記事を読むと(約3分)
保存されている日付データを起点に、1ヶ月前、1ヶ月後など、保存日以外の日付を取得する事が出来ます。10日前や10日後、1週間前や1週間後なども同じような考えで取得可能です。

以下のような、日付(date)データをもつ、記事投稿テーブルを用意しました。

テーブル名:sample_note

idtittledatemember_idlinestatus
1AAAAA2022-12-261501
2BBBBB2022-12-272501
3CCCCC2022-12-283501
4DDDDD2022-12-29500
5EEEEE2022-12-301501

以下のコードは、dataカラムに入っている日付の1ヶ月後をDATE_ADD関数によって取得しているSQLです。いつもの様に、ポイントは、9行目のみです。

SELECT *, DATE_ADD(date, INTERVAL 1 MONTH) AS date2 FROM sample_note この部分で、データベースの全てのレコードと、DATE_ADD関数によって導かれた1ヶ月後の日付(date2)を取得しております。

ちなみに、1ヶ月前を取得する場合は、DATE_ADD(date, INTERVAL -1 MONTH) になります。

try {
    include_once '../model/class.php';

    // データベース接続
    $database = new Database();
    $db = $database->connect();

    // SQLを準備し、パラメータをバインドする
    $query = 'SELECT *, DATE_ADD(date, INTERVAL 1 MONTH) AS date2 FROM sample_note';
    $stmt = $db->prepare($query);

    // 実行する
    $stmt->execute();

    // 結果を取得する
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    print_r($result);

    // データベースから切断する
    $database->disconnect();

} catch(PDOException $e) {
    echo $e->getMessage();
}

これを実行すると、二次元連想配列という形式で、結合された情報を取得することができます。

            Array
(
    [0] => Array
        (
            [id] => 1
            [tittle] => AAAAA
            [date] => 2022-12-26
            [member_id] => 1
            [line] => 50
            [status] => 1
            [date2] => 2023-01-26
        )

    [1] => Array
        (
            [id] => 2
            [tittle] => BBBBB
            [date] => 2022-12-27
            [member_id] => 2
            [line] => 50
            [status] => 1
            [date2] => 2023-01-27
        )

    [2] => Array
        (
            [id] => 3
            [tittle] => CCCCC
            [date] => 2022-12-28
            [member_id] => 3
            [line] => 50
            [status] => 1
            [date2] => 2023-01-28
        )

    [3] => Array
        (
            [id] => 4
            [tittle] => DDDDD
            [date] => 2022-12-29
            [member_id] => 
            [line] => 50
            [status] => 0
            [date2] => 2023-01-29
        )

    [4] => Array
        (
            [id] => 5
            [tittle] => EEEEE
            [date] => 2022-12-30
            [member_id] => 1
            [line] => 50
            [status] => 1
            [date2] => 2023-01-30
        )

)
			

見やすくする為に、HTMLとCSSで体裁を整え、1ヶ月後を追加で表示しました。

保存されている日付の1ヶ月後を取得

id tittle date 1ヶ月後
1
AAAAA
2022-12-26
2023-01-26
2
BBBBB
2022-12-27
2023-01-27
3
CCCCC
2022-12-28
2023-01-28
4
DDDDD
2022-12-29
2023-01-29
5
EEEEE
2022-12-30
2023-01-30

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。