SQLの日付フォーマット変換方法を知りたいときはないでしょうか。
けど、そんな中で悩むことは、
・SQLの日付フォーマットを「YYYY/MM/DD」にしたいが方法がわからない
ですよね。
今回はそんなお悩みを解決する
まとめます!
もくじ
日付のフォーマット変換について
日付のフォーマット変換は、データベースでの日付データの処理においてよく行われるかと思います。
特に現場ではSQLを使用することが多いですので、適切なフォーマット変換方法を把握し、すぐに使えるようになるとよいでしょう。
この記事ではサンプルデータを用いながらよく使われる日付フォーマットの方法についてMySQL、PostgreSQL、SQL Serverの種類別に説明をします。
基本的な日付フォーマットの種類
基本的な日付フォーマットの種類は以下の二点になります。
- 標準フォーマット: YYYY-MM-DD, YYYYMMDD など
- カスタムフォーマット: YYYY/MM/DD, DD-MM-YYYY など、地域や用途に応じた様々な形式
SQLにおける日付フォーマット変換
SQLにおける日付フォーマット変換の内容についてサンプルデータから説明をします。
サンプル表
サンプル表は標準フォーマットのYYYY-MM-DD形式のデータになります。
テーブル名:events
id | event_name | event_date |
---|---|---|
1 | Event A | 2023-01-15 |
2 | Event B | 2023-02-20 |
3 | Event C | 2023-03-10 |
表作成のSQL
-- events テーブルの作成
CREATE TABLE events (
id INT PRIMARY KEY,
event_name VARCHAR(50),
event_date DATE
);
-- サンプルデータの挿入
INSERT INTO events (id, event_name, event_date) VALUES
(1, 'Event A', '2023-01-15'),
(2, 'Event B', '2023-02-20'),
(3, 'Event C', '2023-03-10');
MySQL
MySQLの場合、DATE_FORMAT 関数とSTR_TO_DATE関数を使用して操作を行います。
なお、フォーマット指定子(’%Y’、’%m’、’%d’ など)はMySQL固有のものです。
- DATE_FORMAT関数
SELECT event_name, DATE_FORMAT(event_date, '%Y-%m-%d') AS formatted_date FROM events;
- STR_TO_DATE関数
SELECT event_name, STR_TO_DATE(event_date, '%Y-%m-%d') AS original_date FROM events;
結果
|————|—————|
| Event A | 2023-01-15 |
| Event B | 2023-02-20 |
| Event C | 2023-03-10 |
PostgreSQL
PostgreSQLにおいて日付のフォーマットを変換するにはTO_CHAR関数を使用します。
なお、event_dateが日付型 (DATE) であることが前提となります。
- TO_CHAR関数
SELECT event_name, TO_CHAR(event_date, 'DD Mon YYYY') AS formatted_date FROM events;
結果
|————|—————-|
| Event A | 15 Jan 2023 |
| Event B | 20 Feb 2023 |
| Event C | 10 Mar 2023 |
event_dateが文字列型の入力である場合はTO_DATE関数を使用します。
- TO_DATE関数
SELECT event_name, TO_DATE(event_date, 'YYYY-MM-DD') AS original_date FROM events;
SQL Server
SQL Serverにおいて日付のフォーマットを変換するにはCONVERT関数とFORMAT関数を使用します。
- CONVERT関数
SELECT event_name, CONVERT(varchar, event_date, 103) AS formatted_date FROM events;
- FORMAT関数
SELECT event_name, FORMAT(event_date, 'dd/MM/yyyy') AS formatted_date FROM events;
結果
|————|—————-|
| Event A | 15/01/2023 |
| Event B | 20/02/2023 |
| Event C | 10/03/2023 |
CONVERT関数の形式の番号は以下を参考にしてください。
形式番号 | サンプルの結果 |
---|---|
0 | Aug 23 2019 1:39PM |
1 | 08/23/19 |
2 | 19.08.23 |
3 | 2023/8/19 |
4 | 23.08.19 |
5 | 2023/8/19 |
6 | 23-Aug-19 |
7 | 23-Aug-19 |
8 または 24 または 108 | 13:39:17 |
9 または 109 | Aug 23 2019 1:39:17:090PM |
10 | 08-23-19 |
11 | 2019/8/23 |
12 | 190823 |
13 または 113 | 23 Aug 2019 13:39:17:090 |
14 または 114 | 13:39:17:090 |
20 または 120 | 2019/8/23 13:39 |
21 または 25 または 121 | 39:17.1 |
22 | 08/23/19 1:39:17 PM |
23 | 2019/8/23 |
101 | 08/23/2019 |
102 | 2019.08.23 |
103 | 23/08/2019 |
104 | 23.08.2019 |
105 | 23-08-2019 |
106 | 23-Aug-19 |
107 | 2019 年 8 月 23 日 |
110 | 08-23-2019 |
111 | 2019/8/23 |
112 | 20190823 |
113 | 39:17.1 |
120 | 2019/8/23 13:39 |
121 | 39:17.1 |
126 | 2019-08-23T13:39:17.09 |
127 | 2019-08-23T13:39:17.09 |
130 | 22 ذو الحجة 1440 1:39:17.090P |
131 | 22/12/1440 1:39:17.090PM |
参考:https://learn.microsoft.com/ja-jp/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver16
日付フォーマット変換時の注意点
日付フォーマット変換時の注意すべき点は、
タイムゾーンによって日付が変わる可能性があるため、変換時には注意しましょう。
また、ロケールによって日付の表記が異なるため、グローバル利用のアプリケーションでは特に注意しましょう。
さいごに
いかがでしょうか。
今回は、
まとめました。
また、他にも学習に役に立つ情報がありますので、よろしければご参照頂ければと思います。