【MySQL】日付関数
ここではMySQLで使える日付関数をまとめて紹介しています。
CURRENT_DATE関数
CURRENT_DATE関数を使うことで、現在の日付を取得することが出来ます。
SELECT CURRENT_DATE();
CURRENT_TIME関数
CURRENT_TIME関数を使うことで、現在の時刻を取得することが出来ます。
SELECT CURRENT_TIME();
CURRENT_TIMESTAMP関数
CURRENT_TIMESTAMP関数を使うことで、現在の日時を取得することが出来ます。
SELECT CURRENT_TIMESTAMP();
DATE_ADD関数
DATE_ADD関数を使うことで、任意の日数を加算した日付を取得することが出来ます。
SELECT DATE_ADD(CURRENT_DATE(),INTERVAL 10 DAY);
または
SELECT ADDDATE(CURRENT_DATE(),INTERVAL 10 DAY);
DATE_SUB関数
DATE_SUB関数を使うことで、任意の日数を減算した日付を取得することが出来ます。
SELECT DATE_SUB(CURRENT_DATE(),INTERVAL 10 DAY);
または
SELECT SUBDATE(CURRENT_DATE(),INTERVAL 10 DAY);
DATE_FORMAT関数
DATE_FORMAT関数を使うことで、日付型の列またはデータを任意の形式に変換することができます。
SELECT DATE_FORMAT(CURRENT_DATE(),'%Y/%m/%d');
次のSQLでは、4桁の年、2桁の月、2桁の日を取得しています。
mysql> SELECT DATE_FORMAT(NOW(),'%Y/%m/%d');
+-------------------------------+
| DATE_FORMAT(NOW(),'%Y/%m/%d') |
+-------------------------------+
| 2010/10/10 |
+-------------------------------+
1 row in set (0.04 sec)
DATE_FORMAT関数の書式は次の通りです。
書式 | 内容 | 表記 |
%Y | 年 | 4桁 |
%y | 年 | 2桁 |
%c | 月 | 1~12 |
%m | 月 | 01~12 |
%d | 日 | 00~31 |
%e | 日 | 0~31 |
%H | 時 | 00~23 |
%k | 時 | 0~23 |
%i | 分 | 00~59 |
%s | 秒 | 00~59 |
%w | 曜日 | 0~6、日曜日が0 |
DATEDIFF関数
DATEDIFF関数を使うことで、日付型の列の差を求めることが出来ます。
引数1-引数2の差を求めます。
SELECT
DATEDIFF(CURRENT_DATE()
,DATE_ADD(CURRENT_DATE(),INTERVAL 10 DAY)
)
;
DAY関数
DAY関数を使うことで、日付型の列の日だけを求めることが出来ます。
SELECT DAY(CURRENT_DATE());
DAYNAME関数
DAYNAME関数を使うことで、日付型の列の曜日を求めることが出来ます。
SELECT DAYNAME(CURRENT_DATE());
DAYOFWEEK関数
DAYOFWEEK関数を使うことで、日付型の列の曜日を1~7の数字で求めることが出来ます。
SELECT DAYOFWEEK(CURRENT_DATE());
DAYOFYEAR関数
DAYOFYEAR関数を使うことで、日付型の列の値が、年間を通して何日目かを求めることが出来ます。
SELECT DAYOFYEAR(CURRENT_DATE());
HOUR関数
HOUR関数を使うことで、日付型の列の時だけを求めることが出来ます。
SELECT HOUR(CURRENT_TIMESTAMP());
LAST_DAY関数
LAST_DAY関数を使うことで、日付型の列の月の最終日を求めることが出来ます。
SELECT LAST_DAY(CURRENT_DATE());
MINUTE関数
MINUTE関数を使うことで、日付型の列の分を求めることが出来ます。
SELECT MINUTE(CURRENT_TIMESTAMP());
MONTH関数
MONTH関数を使うことで、日付型の列の月を求めることが出来ます。
SELECT MONTH(CURRENT_DATE());
MONTHNAME関数
MONTHNAME関数を使うことで、日付型の列の月名を求めることが出来ます。
SELECT MONTHNAME(CURRENT_DATE());
NOW関数
NOW関数を使うことで、現在の日付や日時を取得することが出来ます。
取得の際、’YYYY-MM-DD HH:MM:SS’やYYYYMMDDHHMMSSといった書式を指定して値を取得することが出来ます。
NOW関数の基本的な使い方は次の通りです。
値1を指定することで、小数部分の精度を任意に指定することもできます。
NOW(値1);
‘YYYY-MM-DD HH:MM:SS’の文字列で取得
NOW関数を引数なしで実行すると’YYYY-MM-DD HH:MM:SS’形式の文字列で現在の日付と時刻を取得することが出来ます。
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2010-10-10 10:10:10 |
+---------------------+
1 row in set (0.03 sec)
YYYYMMDDHHMMSSの数値で取得する方法
「NOW()+0」とすることでYYYYMMDDHHMMSS書式の数値として、現在の日付と時刻を取得することが出来ます。
mysql> SELECT NOW()+0;
+----------------+
| NOW()+0 |
+----------------+
| 20101010101010 |
+----------------+
1 row in set (0.00 sec)
少数桁数の指定
NOW関数の引数を指定した場合、少数部を取得することが出来ます。
mysql> SELECT NOW(3);
+-------------------------+
| NOW(3) |
+-------------------------+
| 2010-10-10 10:10:10.100 |
+-------------------------+
1 row in set (0.00 sec)
mysql> SELECT NOW(6);
+----------------------------+
| NOW(6) |
+----------------------------+
| 2010-10-10 10:10:10.100000 |
+----------------------------+
1 row in set (0.00 sec)
mysql> SELECT NOW(6)+0;
+-----------------------+
| NOW(6)+0 |
+-----------------------+
| 20101010101010.100000 |
+-----------------------+
1 row in set (0.00 sec)
QUARTER関数
QUARTER関数を使うことで、日付型の列またはデータの四半期を求めることが出来ます。
SELECT QUARTER(NOW());
SECOND関数
SECOND関数を使うことで、日付型の列の秒だけを求めることが出来ます。
SELECT SECOND(NOW());
SYSDATE関数
SYSDATE関数を使うことで、現在の日時を求めることが出来ます。
SELECT SYSDATE();
TIME_FORMAT関数
TIME_FORMAT関数を使うことで、日付型の列またはデータを任意の形式に変換することができます。
SELECT TIME_FORMAT(NOW(),'%H:%i:%s');
WEEK関数
WEEK関数を使うことで、日付型の列の値が、年間を通して何週目かを求めることが出来ます。
SELECT WEEK(NOW());
YEAER関数
YEAR関数を使うことで、日付型の列の値から年だけを求めることが出来ます。
SELECT YEAR(NOW());