勉強したことのメモ

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

 

データベース構造

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 | |
+-------+--------------+------+-----+---------+----------------+
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 | | +-------+--------------+------+-----+---------+----------------+
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日以内

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT *
FROM `test_table`
WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -10 DAY);
SELECT * FROM `test_table` WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -10 DAY);
SELECT * 
FROM `test_table` 
WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -10 DAY);

1ヶ月以内

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT *
FROM `test_table`
WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -1 MONTH);
SELECT * FROM `test_table` WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -1 MONTH);
SELECT * 
FROM `test_table` 
WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -1 MONTH);

1年以内

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT *
FROM `test_table`
WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -1 YEAR);
SELECT * FROM `test_table` WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -1 YEAR);
SELECT * 
FROM `test_table` 
WHERE `ymd` >= DATE_ADD(NOW(), INTERVAL -1 YEAR);

 - MySQL データベース

  関連記事

MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法

MySQLのバックアップを取る際にadminerとかから手動で対応するのではなく ...

MySQLでLIKE検索時に大文字・小文字・半角・全角全て区別したい

以前にMySQLであいまい検索時に大文字小文字は区別しないが、それ以外は全て区別 ...

MySQLでINSERT時にオートインクリメントではないカラムに連番を登録する方法

MySQLでINSERT時にオートインクリメントではないカラムに連番を登録したい ...

adminerでMySQLに接続しようとするとエラーになる場合の対応方法

新しく構築したサーバにadminerを入れて接続しようとすると、「mysqlnd ...

MySQLにてdatetime型のカラムを整形し「年月日のみ形式」または「秒のみ省いた形式」で表示する方法

MySQLにてdatetime型のカラムに登録日時等を格納しており、管理画面側で ...

S