【MySQL】日付から年/月/日/曜日/月初/月末/年度の取得方法
ここではMySQLで、日付から年/月/日/曜日/月初/月末/年度の取得方法を紹介しています。
年の取得
日付から年を取得するには、DATE_FORMAT関数を使います。
日付型の値から4桁の年を取得するには、書式に’%Y’を指定します。
SELECT DATE_FORMAT(CURDATE(),'%Y');
月(1~12)を取得するには、書式に’%c’を指定します。
SELECT DATE_FORMAT(CURDATE(),'%y');
月の取得
日付から月を取得するには、DATE_FORMAT関数を使います。
日付型の値から月(01~12)を取得するには、書式に’%m’を指定します。
SELECT DATE_FORMAT(CURDATE(),'%m');
月(1~12)を取得するには、書式に’%c’を指定します。
SELECT DATE_FORMAT(CURDATE(),'%c');
日付の取得
日付から日を取得するには、DATE_FORMAT関数を使います。
日付型の値から日(00~31)を取得するには、書式に’%d’を指定します。
SELECT DATE_FORMAT(CURDATE(),'%d');
日(0~31)を取得するには、書式に’%e’を指定します。
SELECT DATE_FORMAT(CURDATE(),'%e');
曜日の取得
DAYOFWEEK関数を使う方法
曜日を取得するには、DAYOFWEEK関数を使います。
DAYOFWEEK関数は、日付型の値を引数に、曜日を下記のインデックスとして返してきます。
mysql> SELECT DAYOFWEEK(NOW());
+------------------+
| DAYOFWEEK(NOW()) |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
返却値 | 内容 |
1 | 日曜日 |
2 | 月曜日 |
3 | 火曜日 |
4 | 水曜日 |
5 | 木曜日 |
6 | 金曜日 |
7 | 土曜日 |
WEEKDAY関数を使う方法
曜日を取得するには、WEEKDAY関数を使います。
WEEKDAY関数は、日付型の値を引数に、曜日を下記のインデックスとして返してきます。
mysql> SELECT WEEKDAY(NOW());
+----------------+
| WEEKDAY(NOW()) |
+----------------+
| 6 |
+----------------+
1 row in set (0.01 sec)
返却値 | 内容 |
0 | 月曜日 |
1 | 火曜日 |
2 | 水曜日 |
3 | 木曜日 |
4 | 金曜日 |
5 | 土曜日 |
6 | 日曜日 |
月初の取得
月初を計算するときはDATE_FORMAT関数を使います。
月初を計算したい日付を引数に、日付を01に変更します。
SELECT DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01');
月末の取得
月末を計算するときは、LAST_DAY関数を使います。
月末を計算したい日付を引数に、LAST_DAY関数を使って取得します。
SELECT LAST_DAY(CURRENT_DATE());
年度の取得
日付から年度を取得するには、DATE_SUB関数とDATE_FORMAT関数を使います。
日付型の値からDATE_SUB関数でマイナス3ヵ月し、年を取得します。
SELECT DATE_FORMAT(DATE_SUB(日付,INTERVAL 3 MONTH),'%Y');
年度を2桁で取得したい場合は書式を’%y’に指定します。
SELECT DATE_FORMAT(DATE_SUB(日付,INTERVAL 3 MONTH),'%y');
年度の取得サンプル:12月31日
mysql> SELECT DATE_FORMAT(DATE_SUB('2009-12-31',INTERVAL 3 MONTH),'%Y');
+-----------------------------------------------------------+
| DATE_FORMAT(DATE_SUB('2009-12-31',INTERVAL 3 MONTH),'%Y') |
+-----------------------------------------------------------+
| 2009 |
+-----------------------------------------------------------+
1 row in set (0.00 sec)
年度の取得サンプル:3月31日
mysql> SELECT DATE_FORMAT(DATE_SUB('2010-03-31',INTERVAL 3 MONTH),'%Y');
+-----------------------------------------------------------+
| DATE_FORMAT(DATE_SUB('2010-03-31',INTERVAL 3 MONTH),'%Y') |
+-----------------------------------------------------------+
| 2009 |
+-----------------------------------------------------------+
1 row in set (0.00 sec)
年度の取得サンプル:4月1日
mysql> SELECT DATE_FORMAT(DATE_SUB('2010-04-01',INTERVAL 3 MONTH),'%Y');
+-----------------------------------------------------------+
| DATE_FORMAT(DATE_SUB('2010-04-01',INTERVAL 3 MONTH),'%Y') |
+-----------------------------------------------------------+
| 2010 |
+-----------------------------------------------------------+
1 row in set (0.00 sec)