page_adsence

2011年6月3日金曜日

MySQLの日付関連の便利関数のまとめ

MySQLで日付を取得したりするのにいろいろと便利な関数があるので、それをメモっておく。

現時刻を取得する方法
mysql> SELECT CURRENT_TIME;
+--------------+
| current_time |
+--------------+
| 10:43:15     |
+--------------+


日付を取得する方法
mysql> SELECT CURRENT_DATE;
+--------------+
| current_date |
+--------------+
| 2011-06-03   |
+--------------+


現在の日時を取得する方法(どちらで取っても同じ結果が取れる)
mysql> SELECT CURRENT_TIMESTAMP;
+---------------------+
| current_timestamp   |
+---------------------+
| 2011-06-13 10:14:47 |
+---------------------+

mysql> SELECT NOW();
+---------------------+
| now()               |
+---------------------+
| 2011-06-13 10:14:47 |
+---------------------+


曜日を取得する方法
mysql> SELECT DAYNAME(NOW());
+----------------+
| DAYNAME(NOW()) |
+----------------+
| Friday         |
+----------------+


曜日を数字で取得する方法(月曜日が0で1ずつ増えていく)
mysql> SELECT WEEKDAY(NOW());
+----------------+
| WEEKDAY(NOW()) |
+----------------+
|              0 |
+----------------+


今年に入って何日経過したかを取得する方法
mysql> SELECT DAYOFYEAR(NOW());
+-------------------+
| DAYOFYEAR(NOW())  |
+-------------------+
|               154 |
+-------------------+


今月に入って何日経過したかを取得する方法
mysql> SELECT DAYOFMONTH(NOW());
+-------------------+
| DAYOFMONTH(NOW()) |
+-------------------+
|                10 |
+-------------------+


月末の日付を取得する方法
mysql> SELECT LAST_DAY(NOW());
+-----------------+
| LAST_DAY(NOW()) |
+-----------------+
| 2011-06-30      |
+-----------------+


先月末を取得する方法
mysql> SELECT LAST_DAY(DATE_ADD(NOW(), INTERVAL -1 month));
+----------------------------------------------+
| LAST_DAY(DATE_ADD(NOW(), INTERVAL -1 month)) |
+----------------------------------------------+
| 2011-05-31                                   |
+----------------------------------------------+


日付を整形して取得する方法
mysql> SELECT DATE_FORMAT(NOW(), '%Y%m%d%H%i%s');
+------------------------------------+
| DATE_FORMAT(NOW(), '%Y%m%d%H%i%s') |
+------------------------------------+
| 20110603093243                     |
+------------------------------------+


文字列を整形して日付にする方法
mysql> SELECT STR_TO_DATE(201106030932, '%Y%m%d%H%i%s');
+------------------------------------+
| STR_TO_DATE(NOW(), '%Y%m%d%H%i%s') |
+------------------------------------+
| 2011-06-03 09:32:00                |
+------------------------------------+


といった感じでいろいろな関数が用意されている。
以下のページに詳しく載っているので参考にする。

http://www.limy.org/program/db/mysql/mysql_operators.html