MySQLで曜日を調べる
MySQLの曜日を調べる関数は2つあって、それぞれ戻り値が違うので紛らわしい。
DAYOFWEEK(date)
date ( 1 = Sunday 、2 = Monday 、… 、7 = Saturday ) に対する曜日のインデックスを戻します。
これらのインデックス値は、ODBC 標準に対応しています。
mysql> SELECT DAYOFWEEK('2011-07-13'); +-------------------------+ | DAYOFWEEK('2011-07-13') | +-------------------------+ | 4 | +-------------------------+
mysql> SELECT DAYOFWEEK(now()); +------------------+ | DAYOFWEEK(now()) | +------------------+ | 4 | +------------------+ 1 row in set (0.00 sec)
こちらは日曜の1始まり。
戻り値 | 曜日 |
1 | 日曜日 |
2 | 月曜日 |
3 | 火曜日 |
4 | 水曜日 |
5 | 木曜日 |
6 | 金曜日 |
7 | 土曜日 |
WEEKDAY(date)
date ( 0 = Monday 、1 = Tuesday 、… 、… 6 = Sunday ) の曜日のインデックスを戻します。
mysql> SELECT WEEKDAY('2011-07-13'); +-----------------------+ | WEEKDAY('2011-07-13') | +-----------------------+ | 2 | +-----------------------+
mysql> SELECT WEEKDAY(NOW()); +----------------+ | WEEKDAY(NOW()) | +----------------+ | 2 | +----------------+
こちらは月曜の0始まり。
戻り値 | 曜日 |
0 | 月曜日 |
1 | 火曜日 |
2 | 水曜日 |
3 | 木曜日 |
4 | 金曜日 |
5 | 土曜日 |
6 | 日曜日 |
曜日名を取得する。
SELECT ( CASE dayofweek(now()) WHEN 1 THEN '日曜日' WHEN 2 THEN '月曜日' WHEN 3 THEN '火曜日' WHEN 4 THEN '水曜日' WHEN 5 THEN '木曜日' WHEN 6 THEN '金曜日' WHEN 7 THEN '土曜日' END ) AS week ;
+--------+ | week | +--------+ | 水曜日 | +--------+
参考:
MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.5 日付時刻関数
http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html