SQLの日付フォーマット変換方法まとめ!MySQL、PostgreSQL、SQL Server対応!

かんたん!SQL





SQLの日付フォーマット変換方法を知りたいときはないでしょうか。

けど、そんな中で悩むことは、

・SQLの日付フォーマット変換方法がわからない
・SQLの日付フォーマットを「YYYY/MM/DD」にしたいが方法がわからない

ですよね。

今回はそんなお悩みを解決する

・SQLの日付フォーマット変換方法をMySQL、PostgreSQL、SQL Server別に

まとめます!

 

 

日付のフォーマット変換について

日付のフォーマット変換は、データベースでの日付データの処理においてよく行われるかと思います。

特に現場ではSQLを使用することが多いですので、適切なフォーマット変換方法を把握し、すぐに使えるようになるとよいでしょう。

この記事ではサンプルデータを用いながらよく使われる日付フォーマットの方法についてMySQL、PostgreSQL、SQL Serverの種類別に説明をします。

基本的な日付フォーマットの種類

基本的な日付フォーマットの種類は以下の二点になります。

  • 標準フォーマット: YYYY-MM-DD, YYYYMMDD など
  • カスタムフォーマット: YYYY/MM/DD, DD-MM-YYYY など、地域や用途に応じた様々な形式

タカヒロ
タカヒロ
特に国内ではYYYY/MM/DDの形式が多いですね。

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_name | original_date |
|————|—————|
| 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_name | formatted_date |
|————|—————-|
| 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_name | formatted_date |
|————|—————-|
| 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

タカヒロ
タカヒロ
FORMAT 関数は比較的新しいSQL Serverのバージョン(2012以降)で利用可能です。

日付フォーマット変換時の注意点

日付フォーマット変換時の注意すべき点は、
タイムゾーンによって日付が変わる可能性があるため、変換時には注意しましょう。
また、ロケールによって日付の表記が異なるため、グローバル利用のアプリケーションでは特に注意しましょう。

さいごに

いかがでしょうか。

今回は、

・SQLの日付フォーマット変換方法をMySQL、PostgreSQL、SQL Server別に

まとめました。

また、他にも学習に役に立つ情報がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。