勉強したことのメモ.

Webエンジニア / プログラマが勉強したことのメモ。

MySQLで直近〇日、〇ヶ月、〇年以内のデータを検索する方法

  MySQL データベース

他社が作成されたSQL文を見ているとDATE_ADDという使ったことの無い関数が見受けられた。内容的には直近〇日のデータを検索する、といったSQL文みたい。自分の場合だとPHP側で〇日前の日付を計算して「ymd >= yyyy-mm-dd」みたいに書くが、DATE_ADD関数を使った方がスマートそう。以下に使い方のメモ。

 

リファレンス

https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_date-add

 

データベース構造

mysql> SHOW COLUMNS FROM `test_table`;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | NO   |     | NULL    |                |
| ymd   | date         | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+

 

ソースコード

10日以内

SELECT * 
FROM `test_table` 
WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -10 DAY);

1ヶ月以内

SELECT * 
FROM `test_table` 
WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -1 MONTH);

1年以内

SELECT * 
FROM `test_table` 
WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -1 YEAR);

 - MySQL データベース

  関連記事

MySQLでテーブルのカラム名やカラムの型等、詳細情報を取得する方法
MySQLでテーブルのカラム名やカラムの型等、詳細情報を取得する方法

MySQLでテーブルのカラム名やカラムの型等、詳細情報を取得する方法をメモ。 & ...

MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法
MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法

先日PHPで画像を比較して類似度を算出する「image-comparator」ラ ...

MySQLにて直近のクエリで発行されたAUTO_INCREMENTの値を取得する方法
MySQLにて直近のクエリで発行されたAUTO_INCREMENTの値を取得する方法

やりたかったことは「MySQLで新規登録(INSERT)なら、登録時のAUTO_ ...

PHP / MySQLで2038年問題の対策
PHP / MySQLで2038年問題の対策

先日打ち合わせの際に「タイムスタンプを使ってユニークキーに云々~~」といったよう ...

MySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法
MySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法

MySQLでオートインクリメントを使用せずにグループ毎で連番を割り振りたかった。 ...