MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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()を適用して等価比較を行うだけで、週単位のフィルタリングが実現できます。週報やダッシュボードなど、「今週分の集計」が必要な場面でぜひ活用してください。

  1. MySQLでクエリの実行結果を変数に代入する方法をわかりやすく解説

    MySQLでクエリ結果を変数に代入する基本MySQLでは、@変数名 の形式でユーザー定義変数を使用することで、クエリの実行結果を変数に格納できます。代入には :=(代入演算子)を使い、SELECT文の中で直接値を取得するのが一般的な方法です。この記事では、実際にテーブルを作成し、クエリ結果を変数に代入するまでの一連の手順をサンプルコード付きで紹介します。1. サンプルテーブルを作成するまず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1864 ( Id int, FirstName var

  2. MySQLで現在のデータベース名を指定してデータベースを削除する方法

    MySQLでは、DROP DATABASE文を使うことでデータベースを削除できます。ここでは、現在接続中のデータベース名を動的に取得し、そのデータベース自身を削除する手順を解説します。1. 現在のデータベース名を取得する現在選択されているデータベース名を確認するには、SELECT DATABASE()を使用します。select database();2. 削除クエリを動的に組み立てる構文現在のデータベース名をユーザー変数に格納し、CONCAT()で削除用のSQL文を組み立て、プリペアドステートメントとして実行します。基本的な構文は以下のとおりです。set @anyVariableName =