MySQLで特定の曜日に該当する行を選択する方法【DAYOFWEEK関数の使い方】
MySQLで特定の曜日に該当する行を抽出したい場合は、DAYOFWEEK()関数を使用します。この関数は、引数に渡した日付が何曜日かに応じて1〜7の数値を返します。
DAYOFWEEK()関数の戻り値
DAYOFWEEK()関数は、曜日に応じて以下の値を返します。
- 1:日曜日(Sunday)
- 2:月曜日(Monday)
- 3:火曜日(Tuesday)
- 4:水曜日(Wednesday)
- 5:木曜日(Thursday)
- 6:金曜日(Friday)
- 7:土曜日(Saturday)
なお、ODBC標準に基づく仕様のため、「1=日曜日」から始まる点に注意してください。
サンプルテーブルの作成
まず、テーブルを作成します。
mysql> create table DemoTable785 ( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, CustomerName varchar(100), ShoppingDate date ); Query OK, 0 rows affected (0.61 sec)
レコードの挿入
insertコマンドを使って、テーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable785(CustomerName,ShoppingDate) values('Chris','2019-07-03');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable785(CustomerName,ShoppingDate) values('Robert','2019-07-01');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable785(CustomerName,ShoppingDate) values('David','2019-07-06');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable785(CustomerName,ShoppingDate) values('Carol','2019-07-19');
Query OK, 1 row affected (0.19 sec)
テーブルの内容を確認する
select文を使って、テーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable785;
これにより、次のような結果が出力されます。
+------------+--------------+--------------+ | CustomerId | CustomerName | ShoppingDate | +------------+--------------+--------------+ | 1 | Chris | 2019-07-03 | | 2 | Robert | 2019-07-01 | | 3 | David | 2019-07-06 | | 4 | Carol | 2019-07-19 | +------------+--------------+--------------+ 4 rows in set (0.00 sec)
特定の曜日の行を抽出するクエリ
以下は、特定の曜日に該当する行だけを選択するクエリの例です。ここでは「DAYOFWEEK(ShoppingDate)=2」、つまり月曜日に該当する行を取得しています。
mysql> select *from DemoTable785 where DAYOFWEEK(ShoppingDate)=2;
実行すると、次のような結果が出力されます。
+------------+--------------+--------------+ | CustomerId | CustomerName | ShoppingDate | +------------+--------------+--------------+ | 2 | Robert | 2019-07-01 | +------------+--------------+--------------+ 1 row in set (0.00 sec)
2019年7月1日は月曜日であるため、該当する1件のレコードのみが抽出されました。このように、WHERE句の中でDAYOFWEEK()関数を使うことで、曜日を条件とした柔軟なデータ検索が可能になります。
補足:WEEKDAY()関数との違い
MySQLには、曜日を数値で返す関数としてWEEKDAY()もあります。こちらは「0=月曜日」始まりで、0〜6の値を返すという違いがあります。SQL Serverなどの他のデータベースや、週の開始日を月曜日とする仕組みと合わせやすいので、用途に応じて使い分けるとよいでしょう。
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected
-
MySQLのCONCAT_WS()関数で文字列を連結しながら条件に一致する行を抽出する方法
MySQLのCONCAT_WS()関数とはMySQLでは、CONCAT_WS()関数を使用することで、複数のカラムや値を指定した区切り文字で連結できます。さらにWHERE句と組み合わせれば、条件に一致する行だけを抽出しながら、読みやすい形式の文字列として出力することも可能です。この記事では、実際にテーブルを作成し、CONCAT_WS()と条件指定を組み合わせたクエリの実行例を順番に解説します。サンプルテーブルの作成まず、ユーザー情報を格納するテーブル「demo38」を作成しましょう。mysql> create table demo38-> (-> user_id int,-&