【MySQL】日付・時刻の取得・計算まとめ

MySQLの日付・時刻の取得やフォーマット、計算の使い方をまとめました。
内容は随時追加していきます。
目次
現在日付・現在時刻を取得する
現在日時
SELECT
NOW(),
SYSDATE()
;↓結果↓
+---------------------+---------------------+
| NOW() | SYSDATE() |
+---------------------+---------------------+
| 2023-12-12 17:26:32 | 2023-12-12 17:26:32 |
+---------------------+---------------------+現在日付
SELECT CURDATE(); -- 例:2023-12-12○○を取得する/フォーマット
年月日(DATE)
SELECT DATE('2023/03/10 11:22:33'); -- 2023-03-10年(YEAR)
SELECT YEAR('2023/03/10'); -- 2023月(MONTH)
SELECT MONTH('2023/03/10'); -- 3日(DAY)
SELECT DAY('2023/01/10'); -- 10曜日(DAYOFWEEK/WEEKDAY)
戻り値が異なるだけで、どちらでも曜日は取得できます。
SELECT
DAYOFWEEK('2024-04-01'), -- 2
WEEKDAY('2024-04-01') -- 0
;戻り値の一覧は下記のとおりです。
| 曜日 | DAYOFWEEK | WEEKDAY |
|---|---|---|
| 日 | 1 | 6 |
| 月 | 2 | 0 |
| 火 | 3 | 1 |
| 水 | 4 | 2 |
| 木 | 5 | 3 |
| 金 | 6 | 4 |
| 土 | 7 | 5 |
日付の加算・減算
n日後・n日前
SELECT
ADDDATE('2023/01/01', INTERVAL 10 DAY), -- 2023-01-11
ADDDATE('2023/01/01', INTERVAL -10 DAY) -- 2022-12-22
;n月後・n月前
SELECT
ADDDATE('2023/01/01', INTERVAL 1 MONTH),
ADDDATE('2023/01/01', INTERVAL -1 MONTH)n年後・n年前
SELECT
ADDDATE('2023/01/01', INTERVAL 1 YEAR),
ADDDATE('2023/01/01', INTERVAL -1 YEAR)n週後・n週前
SELECT
ADDDATE('2023/01/01', INTERVAL 1 WEEK),
ADDDATE('2023/01/01', INTERVAL -1 WEEK)日数の間隔を計算(日数計算)
日数計算
SELECT
DATEDIFF('2025-01-31', '2025-01-01') -- 30月数計算
SELECT
PERIOD_DIFF(202512, 202501) -- 11以上になります。
お読み頂き、ありがとうございました。


