MySQLで現在の年月日を取得する(CURDATE関数)

MySQL MySQL

MySQLで現在の年月日を西暦で取得する方法について書いています。
西暦の年月日を取得するにはCURDATE関数を使います。

CURDATEについては、公式ドキュメントのこちらに書いています。
載せているSQLはMySQLのバージョン8.0.32を使って動作を確認しています。

年月日を取得する

西暦で年月日を取得したいときには、CURDATE関数を使うと良いです。
例えば、下記のSQLを実行します。

SELECT CURDATE();

そうすると、このように年月日が返ってきたことが確認できました。

mysql> SELECT CURDATE();
+------------+
| CURDATE()  |
+------------+
| 2023-05-19 |
+------------+
1 row in set (0.00 sec)

ハイフンなしで取得したい

ハイフンなしで取得したいときには、「+ 0」すると取得することができます。

SELECT CURDATE() + 0;

実行すると、下記のようにハイフンなしの結果が返ってきます。

mysql> SELECT CURDATE() + 0;
+---------------+
| CURDATE() + 0 |
+---------------+
|      20230519 |
+---------------+
1 row in set (0.00 sec)

CURRENT_DATE関数は別名

CURRENT_DATEやCURRENT_DATE関数は、CURDATE関数の別名になります。
そのため、下記のように実行すると、どのカラムも同じ結果です。

SELECT CURRENT_DATE, CURRENT_DATE(), CURDATE();

実行すると、どれを使っても西暦で年月日が返ってきました。

mysql> SELECT CURRENT_DATE, CURRENT_DATE(), CURDATE();
+--------------+----------------+------------+
| CURRENT_DATE | CURRENT_DATE() | CURDATE()  |
+--------------+----------------+------------+
| 2023-05-19   | 2023-05-19     | 2023-05-19 |
+--------------+----------------+------------+
1 row in set (0.00 sec)

CURDATE関数を使った登録確認

CURDATE関数を使って、テーブルの下記のカラムに、それぞれがどのように登録されるかを確認してみます。

・数値型(INT)
・文字列(VARCHAR)
・日付型(DATE)
・日時型(DATETIME)
・タイムスタンプ型(TIMESTAMP)

temporary_dateテーブルを作成しました。
CURDATE関数でデータを登録するため、それぞれの型のカラムを用意しました。

CREATE TABLE temporary_date (
  date_number INT,
  date_string VARCHAR(20),
  date_date DATE,
  date_datetime DATETIME,
  date_timestamp TIMESTAMP
);

全てのカラムにCURDATE関数でデータを登録します。
下記のINSERT文を実行してみます。

INSERT INTO temporary_date VALUE (CURDATE(), CURDATE(), CURDATE(), CURDATE(), CURDATE());

登録した後にSELECT文でレコードを取得してみました。
全てのカラムにデータが登録されました。

date_number date_string date_date date_datetime date_timestamp
20230519 2023-05-19 2023-05-19 2023-05-19 00:00:00 2023-05-19 00:00:00

数値型(INT)に関しては、ハイフンを抜いた数値の値になりました。
時刻があるカラムの場合には、時刻は「00:00:00」となりました。

MySQLで年月日を取得する方法まとめ

今回はMySQLで年月日を取得する方法について書きました。
記事の内容をまとめると、下記のようになります。

・MySQLで年月日を取得したいときにはCURDATE関数を使う。
・CURRENT_DATEやCURRENT_DATE関数は別名なので、動作は同じになる。
・数値を足したり、数値型に入れるとハイフンなしで返ってくる。
・INT/VARCHAR/DATE/DATETIME/TIMESTAMPの型に登録することができた。

コメント

タイトルとURLをコピーしました