MySQLで今週のレコードを取得するには?YEARWEEK()関数の使い方を解説
MySQLで「今週」に該当するレコードを抽出したい場合、YEARWEEK()関数を使用すると簡単に実現できます。YEARWEEK()は日付から「年+週番号」を組み合わせた値を返すため、月や年をまたぐ週でも正確に比較できるのが特徴です。
基本の構文
今週のデータを取得するための基本構文は以下の通りです。
SELECT *FROM yourTableName WHERE YEARWEEK(yourDateColumnName) = YEARWEEK(NOW());
WHERE句内で「対象の日付カラムに対するYEARWEEK()」と「NOW()(現在日時)に対するYEARWEEK()」を比較することで、実行時点の週に含まれるレコードだけを絞り込めます。
サンプルテーブルを作成する
それでは、実際に動作を確認するためにサンプルテーブルを作成しましょう。テーブル作成のクエリは次の通りです。
mysql> create table currentWeekDemo -> ( -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserName varchar(20), -> UserPostDate date -> ); Query OK, 0 rows affected (0.68 sec)
ユーザーID・ユーザー名・投稿日の3つのカラムを持つシンプルなテーブル「currentWeekDemo」が作成できました。
サンプルデータを挿入する
続いて、INSERTコマンドを使っていくつかのレコードを登録します。
mysql> insert into currentWeekDemo(UserName,UserPostDate) values('Carol','2010-01-06');
Query OK, 1 row affected (0.20 sec)
mysql> insert into currentWeekDemo(UserName,UserPostDate) values('Bob','2019-06-04');
Query OK, 1 row affected (0.17 sec)
mysql> insert into currentWeekDemo(UserName,UserPostDate) values('David','2019-03-06');
Query OK, 1 row affected (0.16 sec)
mysql> insert into currentWeekDemo(UserName,UserPostDate) values('Maxwell','2018-04-21');
Query OK, 1 row affected (0.15 sec)4件のサンプルデータ(それぞれ異なる日付)が登録されました。
登録済みの全レコードを確認する
SELECT文でテーブル内のすべてのレコードを表示してみましょう。
mysql> select *from currentWeekDemo;
実行結果は以下の通りです。
+--------+----------+--------------+ | UserId | UserName | UserPostDate | +--------+----------+--------------+ | 1 | Carol | 2010-01-06 | | 2 | Bob | 2019-06-04 | | 3 | David | 2019-03-06 | | 4 | Maxwell | 2018-04-21 | +--------+----------+--------------+ 4 rows in set (0.00 sec)
今週のレコードを抽出するクエリを実行する
準備が整ったら、いよいよ今週のデータを取得してみましょう。クエリは次のように記述します。
mysql> select *from currentWeekDemo WHERE YEARWEEK(UserPostDate) = YEARWEEK(NOW());
実行結果:
+--------+----------+--------------+ | UserId | UserName | UserPostDate | +--------+----------+--------------+ | 3 | David | 2019-03-06 | +--------+----------+--------------+ 1 row in set (0.05 sec)
この例では、投稿日が現在の週に該当する「David」のレコードのみが返されました。
まとめ
MySQLで今週のデータを取得するには、YEARWEEK()関数とNOW()を組み合わせるのが最もシンプルな方法です。日付カラムと現在日時の両方にYEARWEEK()を適用して等価比較を行うだけで、週単位のフィルタリングが実現できます。週報やダッシュボードなど、「今週分の集計」が必要な場面でぜひ活用してください。
-
MySQLでクエリの実行結果を変数に代入する方法をわかりやすく解説
MySQLでクエリ結果を変数に代入する基本MySQLでは、@変数名 の形式でユーザー定義変数を使用することで、クエリの実行結果を変数に格納できます。代入には :=(代入演算子)を使い、SELECT文の中で直接値を取得するのが一般的な方法です。この記事では、実際にテーブルを作成し、クエリ結果を変数に代入するまでの一連の手順をサンプルコード付きで紹介します。1. サンプルテーブルを作成するまず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1864 ( Id int, FirstName var
-
MySQLで現在のデータベース名を指定してデータベースを削除する方法
MySQLでは、DROP DATABASE文を使うことでデータベースを削除できます。ここでは、現在接続中のデータベース名を動的に取得し、そのデータベース自身を削除する手順を解説します。1. 現在のデータベース名を取得する現在選択されているデータベース名を確認するには、SELECT DATABASE()を使用します。select database();2. 削除クエリを動的に組み立てる構文現在のデータベース名をユーザー変数に格納し、CONCAT()で削除用のSQL文を組み立て、プリペアドステートメントとして実行します。基本的な構文は以下のとおりです。set @anyVariableName =