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にてORDER BYで並べ替える際に空のカラムは後ろに持ってくる方法
MySQLにてORDER BYで並べ替える際に空のカラムの場合は後ろに持っていき ...
-
-
MySQLでJOINの高速化
JOINで無茶苦茶悩んだのでメモ。やりたかった事は、MySQLで テーブルAには ...
-
-
MySQLで「doesn't have a default value」エラーの対処
MySQLでINSERT時に「Field 'カラム名' doesn't have ...
-
-
お名前.comのレンタルサーバ(SDサーバ)にMySQLデータのインポートする方法
お名前.comのレンタルサーバにそこそこ大きいサイズのMySQLデータを移行した ...
-
-
MySQLのトリガーを使用して特定のテーブルの操作を行った際に別テーブルにログを残す方法
MySQLにトリガーという機能があるらしくどのようなものか調べたところ、事前に「 ...