1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQLの日付関数

Last updated at Posted at 2021-05-15

MySQLの日付関数についてよく使うものを備忘録としてまとめました。

現在の日時
SELECT CURDATE() AS cur_d,
       NOW() cur_dt;

+-------------+----------------------------+
| cur_d       | cur_dt                     |
+-------------+----------------------------+
| 2020-09-20  | 2020-09-21 12:34:56        |
+-------------+----------------------------+
現在の日時を YYYY-MM-DD HH:MM:SS形式で表示
SELECT DATE_FORMAT(CURDATE(), "%Y-%m-%d %H:%i:%s") AS fmt_d,
       DATE_FORMAT(NOW(), "%Y-%m-%d %H:%i:%s") AS fmt_dt;

+---------------------+---------------------+
| fmt_d               | fmt_dt              |
+---------------------+---------------------+
| 2020-09-20 00:00:00 | 2020-09-20 12:34:56 |
+---------------------+---------------------+
現在の日時を日(時分秒は全て0)で丸める
SELECT DATE_FORMAT(DATE(NOW()), "%Y-%m-%d %H:%i:%s") AS dt_trc;

+---------------------+
| dt_trc              |
+---------------------+
| 2020-09-20T00:00:00 |
+---------------------+
現在の日時に日を加算
SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY) AS d_add,
       DATE_ADD(NOW(), INTERVAL 1 DAY) AS dt_add;

+-------------+----------------------------+
| d_add       | dt_add                     |
+-------------+----------------------------+
| 2020-09-21  | 2020-09-21 12:34:56        |
+-------------+----------------------------+
日付から一部(年/月/日)を抽出
SELECT
  EXTRACT(YEAR FROM '2021-05-15') AS YYYY
  , EXTRACT(YEAR_MONTH FROM '2021-05-15 01:02:03') AS YYYYMM
  , EXTRACT(DAY_MINUTE FROM '2021-05-15 01:02:03') AS DDHHMI
  , EXTRACT(MICROSECOND FROM '2021-05-15 10:30:00.000123') AS SS
;

+----------+----------+----------+----------+
| YYYY     | YYYYMM   | DDHHMI   |  SS      |
+-------------+-------+----------+----------+
| 2021     | 202105   | 150102   | 123      |
+----------+----------+----------+----------+
文字列から日付型へ変換
SELECT STR_TO_DATE('2020-09-20', '%Y-%m-%d') AS str_d_1,
       STR_TO_DATE('2020年9月20日', '%Y年%m月%d日') AS str_d_2;


+-------------+---------------------+
| prs_d       | prs_dt              |
+-------------+---------------------+
| 2020-09-20  | 2020-09-20          |
+-------------+---------------------+
月初と月末
SELECT
  DATE_FORMAT( CURDATE(), '%Y-%m-01') AS 今月1日(月初)
  , LAST_DAY( now()) AS 今月末
  , DATE_FORMAT( DATE_ADD(CURDATE(), INTERVAL -1 MONTH), '%Y-%m-01') AS 先月1日(月初)
  , LAST_DAY( DATE_FORMAT( DATE_ADD(CURDATE(), INTERVAL -1 MONTH), '%Y-%m-01')) AS 先月末
;

+--------------+--------------+--------------+--------------+
| 今月1日(月初)  | 今月末        | 先月1日(月初)  | 先月末        |
+--------------+--------------+--------------+--------------+
| 2020-09-01   | 2020-09-31   | 2020-08-01   | 2020-08-31   |
+--------------+--------------+--------------+--------------+

参考:

MySQL リファレンスマニュアル 12.7 日付および時間関数

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?