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でdatetime型にもインデックスを使用して高速化を図る方法
ログ関連のデータを格納するテーブルがあり、集計を行う際に非常に時間がかかった。レ ...
-
-
MySQLでwhere句を使ってカラム指定でデータをコピーする方法
MySQLで大量のデータを保存しているテーブルがあり、そのデータを絞った上で尚且 ...
-
-
MySQLで検索した件数の取得
ページングとかで必要になる総件数について、 いつもググってしまっていたのでメモ。 ...
-
-
MySQLにてUUIDを発行しプライマリキー(主キー)にする方法
普段MySQLでプライマリキー(主キー)を使う場合、オートインクリメントを利用し ...
-
-
MySQLでデータがあれば上書き、無ければ挿入する
既存のソースを編集時に「REPLACE INTO~~」 という見たことの無いSQ ...