【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)