MySQLにてdate型のカラムから曜日を計算し表示する方法
MySQLにてdateもしくはdatetime型のデータを取り出して曜日もあわせて表示したいような場合、曜日部分のプログラムはPHPで対応していた。今更ながらだけどMySQLで対応できるんじゃないのかと思って調べたところ簡単に対応できた。以下に対応方法をメモ。
テーブル構造とデータ内容
mysql> SHOW COLUMNS FROM `test_table`; +-------+------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | ymd | date | NO | | NULL | | +-------+------+------+-----+---------+----------------+ mysql> SELECT * FROM `test_table`; +----+------------+ | id | ymd | +----+------------+ | 1 | 2024-01-01 | | 2 | 2024-01-02 | | 3 | 2024-01-03 | | 4 | 2024-01-04 | | 5 | 2024-01-05 | | 6 | 2024-01-06 | | 7 | 2024-01-08 | +----+------------+
対応方法
SQL文
SELECT `ymd`, CASE DAYOFWEEK(`ymd`) WHEN 1 THEN '日' WHEN 2 THEN '月' WHEN 3 THEN '火' WHEN 4 THEN '水' WHEN 5 THEN '木' WHEN 6 THEN '金' WHEN 7 THEN '土' END AS week FROM `test_table`;
出力結果
+------------+------+ | ymd | week | +------------+------+ | 2024-01-01 | 月 | | 2024-01-02 | 火 | | 2024-01-03 | 水 | | 2024-01-04 | 木 | | 2024-01-05 | 金 | | 2024-01-06 | 土 | | 2024-01-08 | 月 | +------------+------+
リファレンス
DAYOFWEEK
https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_dayofweek
関連記事
-
-
MySQLで月別に集計を行う。あと日付時刻関数。
現在進行形でやっているデータ集計系だけど 新たな発見があったのでメモ。 ■日付時 ...
-
-
MySQLでtime型データからint型データの減算を行い、減算後のデータで条件検索する方法
MySQLでtime型データからint型データの減算を行い、減算後のデータを検索 ...
-
-
MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法
以前にMySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法 ...
-
-
MySQLのトリガーを使用して特定のテーブルの操作を行った際に別テーブルにログを残す方法
MySQLにトリガーという機能があるらしくどのようなものか調べたところ、事前に「 ...
-
-
MySQLが起動も再起動もできない際の対応方法
サイトで障害が発生した。FTPやSSH接続は出来るけどサイト自体は表示されない。 ...