MySQL(MariaDB)の日付関数

MySQL(MariaDB)の日付関数

MySQL(MariaDB)でよく使う日付関数を紹介します。通常はこれだけ覚えておけば大丈夫だと思います。

現在の日付と時間を取得する

CURRENT_DATE → 現在の日付
CURRENT_TIME → 現在の時間
CURRENT_TIMESTAMP → 現在の日時
SELECT CURRENT_DATE;
+--------------+
| CURRENT_DATE |
+--------------+
| 2020-03-19   |
+--------------+

SELECT CURRENT_TIME;
+--------------+
| CURRENT_TIME |
+--------------+
| 22:05:24     |
+--------------+

SELECT CURRENT_TIMESTAMP;
+---------------------+
| CURRENT_TIMESTAMP   |
+---------------------+
| 2020-03-19 22:05:30 |
+---------------------+

日付の加減算

INTERVALを使用すると簡単に計算ができます。

加算: 日付 – INTERVAL 1 YEAR
減算: 日付 + INTERVAL 1 YEAR

日時の文字列
年: YEAR
月: MONTH
日: DAY
時: HOUR
分: MINUTE
秒: SECOND

*日時の予約語をアンダーバー「_」でつなげると、まとめて計算が可能です。

SELECT CURRENT_DATE, CURRENT_DATE + INTERVAL 1 YEAR;
+--------------+--------------------------------+
| CURRENT_DATE | CURRENT_DATE + INTERVAL 1 YEAR |
+--------------+--------------------------------+
| 2020-03-19   | 2021-03-19                     |
+--------------+--------------------------------+

SELECT CURRENT_DATE, CURRENT_DATE - INTERVAL 1 MONTH;
+--------------+---------------------------------+
| CURRENT_DATE | CURRENT_DATE - INTERVAL 1 MONTH |
+--------------+---------------------------------+
| 2020-03-19   | 2020-02-19                      |
+--------------+---------------------------------+

SELECT CURRENT_DATE, CURRENT_DATE + INTERVAL '1 1' YEAR_MONTH;
+--------------+------------------------------------------+
| CURRENT_DATE | CURRENT_DATE + INTERVAL '1 1' YEAR_MONTH |
+--------------+------------------------------------------+
| 2020-03-19   | 2021-04-19                               |
+--------------+------------------------------------------+

SELECT CURRENT_TIME, CURRENT_TIME - INTERVAL '5:30' MINUTE_SECOND;
+--------------+----------------------------------------------+
| CURRENT_TIME | CURRENT_TIME - INTERVAL '5:30' MINUTE_SECOND |
+--------------+----------------------------------------------+
| 22:34:10     | 22:28:40                                     |
+--------------+----------------------------------------------+

日付と時間のフォーマット

DATE_FORMAT(日付,フォーマット)
TIME_FORMAT(時間,フォーマット)

指定子
%Y 年4 桁
%m 月 (00..12)
%c 月 (0..12)
%d 日 (00..31)
%e 日 (0..31)
%H 時間 (00..23)
%k 時 (0..23)
%p AM または PM
%h 時間 (01..12)
%i 分 (00..59)
%s 秒 (00..59)
%w 曜日 (0=Sunday..6=Saturday)

SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%Y/%m/%d %H:%i:%s');
+-----------------------------------------------------+
| DATE_FORMAT(CURRENT_TIMESTAMP, '%Y/%m/%d %H:%i:%s') |
+-----------------------------------------------------+
| 2020/03/19 22:46:47                                 |
+-----------------------------------------------------+

SELECT TIME_FORMAT(CURRENT_TIMESTAMP, '%H:%i:%s');
+--------------------------------------------+
| TIME_FORMAT(CURRENT_TIMESTAMP, '%H:%i:%s') |
+--------------------------------------------+
| 22:50:54                                   |
+--------------------------------------------+