MySQLのDAYOFWEEK()関数で曜日の番号(週番号)を取得する方法
MySQLのDAYOFWEEK()関数とは
MySQLのDAYOFWEEK()関数は、指定した日付がその週の何番目の曜日にあたるかを数値で返します。戻り値は日曜日が「1」、月曜日が「2」というように、日曜日を起点とした番号になります。
各曜日と戻り値の対応は以下の通りです。
| 曜日 | 戻り値 |
|---|---|
| 日曜日 | 1 |
| 月曜日 | 2 |
| 火曜日 | 3 |
| 水曜日 | 4 |
| 木曜日 | 5 |
| 金曜日 | 6 |
| 土曜日 | 7 |
それでは、実際にテーブルを作成して動作を確認していきましょう。
サンプルテーブルの作成
まず、日付型(datetime)のカラムを持つテーブルを作成します。
mysql> create table DayOfWeekDemo
-> (
-> Issuedate datetime
-> );
Query OK, 0 rows affected (0.52 sec)
テーブルへのデータ挿入
次に、INSERTコマンドを使って日付データを挿入します。ここではCURDATE()とDATE_ADD()を組み合わせ、今日の日付から5日後〜11日後までの日付を登録しています。
mysql> insert into DayOfWeekDemo values(date_add(curdate(),interval 5 day));
Query OK, 1 row affected (0.52 sec)
mysql> insert into DayOfWeekDemo values(date_add(curdate(),interval 6 day));
Query OK, 1 row affected (0.13 sec)
mysql> insert into DayOfWeekDemo values(date_add(curdate(),interval 7 day));
Query OK, 1 row affected (0.10 sec)
mysql> insert into DayOfWeekDemo values(date_add(curdate(),interval 8 day));
Query OK, 1 row affected (0.15 sec)
mysql> insert into DayOfWeekDemo values(date_add(curdate(),interval 9 day));
Query OK, 1 row affected (0.10 sec)
mysql> insert into DayOfWeekDemo values(date_add(curdate(),interval 10 day));
Query OK, 1 row affected (0.13 sec)
mysql> insert into DayOfWeekDemo values(date_add(curdate(),interval 11 day));
Query OK, 1 row affected (0.10 sec)
登録済みレコードの確認
SELECT文でテーブル内のレコード件数と内容を確認します。
mysql> select *from DayOfWeekDemo;
実行結果は以下の通りです。
+---------------------+
| Issuedate |
+---------------------+
| 2018-12-03 00:00:00 |
| 2018-12-04 00:00:00 |
| 2018-12-05 00:00:00 |
| 2018-12-06 00:00:00 |
| 2018-12-07 00:00:00 |
| 2018-12-08 00:00:00 |
| 2018-12-09 00:00:00 |
+---------------------+
7 rows in set (0.00 sec)
DAYOFWEEK()関数で曜日の番号を取得する
上記の出力結果を見ると、2018-12-03は月曜日、2018-12-04は火曜日というように、1週間分の連続した日付が登録されています。これらの日付に対して、曜日のインデックス(週番号)を返すクエリを実行してみましょう。
mysql> select dayofweek(Issuedate) as WeekNumber from DayOfWeekDemo;
実行すると、各日付の曜日番号が以下のように表示されます。
+------------+
| WeekNumber |
+------------+
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 1 |
+------------+
7 rows in set (0.00 sec)
月曜日(2018-12-03)には「2」、火曜日には「3」というように、日曜日を「1」とする番号が正しく返されていることがわかります。最後の2018-12-09は日曜日なので「1」が返されています。
まとめ:WEEKDAY()関数との違いに注意
DAYOFWEEK()関数は日曜日を1として曜日番号を返しますが、MySQLには似た関数としてWEEKDAY()関数もあります。WEEKDAY()は月曜日を0、日曜日を6として返すため、両者の基準が異なる点には注意が必要です。
用途に応じて使い分けることで、週単位の集計やレポート処理などを柔軟に実装できます。
-
MySQLで日付から曜日名を取得する方法(DAYNAME関数の使い方)
MySQLで日付に対応する曜日名を取得するには?MySQLで日付データから曜日名(Sunday、Mondayなど)を取得したい場合は、DAYNAME()関数を使用します。この記事では、実際にテーブルを作成し、DAYNAME()関数を使って曜日名を取得する手順を解説します。1. テーブルを作成するまず、出荷日(ShippingDate)を格納するテーブルを作成しましょう。mysql> create table DemoTable1954 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコー
-
Python Pandas入門:Periodオブジェクトから曜日を取得する方法(dayofweekプロパティ)
PandasのPeriodオブジェクトが表す期間が、何曜日に該当するかを取得するには、period.dayofweekプロパティを使用します。この記事では、具体的なコード例とともに、曜日の取得方法をわかりやすく解説します。 dayofweekプロパティとは dayofweekは、Periodオブジェクトが指す日付の曜日を整数値で返すプロパティです。戻り値は以下のように対応しています。 月曜日 = 0 火曜日 = 1 水曜日 = 2 木曜日 = 3 金曜日 = 4 土曜日 = 5 日曜日 = 6 必要なライブラリのインポート まず、pandasをインポートします。 import pandas