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

前の記事

【MySQL】文字列関数

次の記事

【MySQL】算術関数