MySQLのGET_FORMAT()関数とは?使い方と実例をわかりやすく解説
MySQLのGET_FORMAT()関数は、第2引数に指定した標準フォーマットに基づいて、DATE型・TIME型・DATETIME型・TIMESTAMP型などに対応する書式指定文字列(フォーマットコード)を返す関数です。標準フォーマットには「EUR」「INTERNAL」「ISO」「JIS」「USA」の5種類を指定できます。
この関数が返すフォーマットコードはDATE_FORMAT()関数で使用されるものと同一のため、DATE_FORMAT()やSTR_TO_DATE()と組み合わせて利用すると特に便利です。国や地域ごとに異なる日付・時刻の表記に対応させたい場合に役立ちます。
構文
GET_FORMAT(data_type, standard_format)
- data_type: 「DATE」「TIME」「DATETIME」「TIMESTAMP」のいずれかを指定します(TIMESTAMPはDATETIMEと同じ戻り値になります)。
- standard_format: 「EUR」(ヨーロッパ形式)、「INTERNAL」(内部形式)、「ISO」(ISO規格)、「JIS」(日本規格)、「USA」(米国形式)のいずれかを指定します。
使用例
日付(DATE)の場合
mysql> SELECT GET_FORMAT(DATE, 'USA') AS 'AMERICAN Format',
-> GET_FORMAT(DATE, 'ISO') AS 'ISO Format';
+-----------------+------------+
| AMERICAN Format | ISO Format |
+-----------------+------------+
| %m.%d.%Y | %Y-%m-%d |
+-----------------+------------+
1 row in set (0.00 sec)
このクエリは、アメリカ(USA)とISOで使用される日付フォーマットを返します。USAでは「月.日.年」(%m.%d.%Y)、ISOでは「年-月-日」(%Y-%m-%d)という書式が得られることが分かります。
時刻(TIME)の場合
mysql> SELECT GET_FORMAT(TIME, 'USA') AS 'AMERICAN Format',
-> GET_FORMAT(TIME, 'ISO') AS 'ISO Format';
+-----------------+------------+
| AMERICAN Format | ISO Format |
+-----------------+------------+
| %h:%i:%s %p | %H:%i:%s |
+-----------------+------------+
1 row in set (0.00 sec)
このクエリは、アメリカ(USA)とISOで使用される時刻フォーマットを返します。USAでは午前・午後を示す「%p」を含む12時間表記になる点が特徴です。
主な戻り値の一覧
| data_type | standard_format | 戻り値 |
|---|---|---|
| DATE | USA | %m.%d.%Y |
| JIS | %Y-%m-%d | |
| ISO | %Y-%m-%d | |
| EUR | %d.%m.%Y | |
| INTERNAL | %Y%m%d | |
| DATETIME/TIMESTAMP | USA | %Y-%m-%d %H.%i.%s |
| JIS | %Y-%m-%d %H:%i:%s | |
| ISO | %Y-%m-%d %H:%i:%s | |
| EUR | %Y-%m-%d %H.%i.%s | |
| INTERNAL | %Y%m%d%H%i%s | |
| TIME | USA | %h:%i:%s %p |
| JIS | %H:%i:%s | |
| ISO | %H:%i:%s | |
| EUR | %H:%i:%s | |
| INTERNAL | %H%i%s |
DATE_FORMAT()・STR_TO_DATE()との組み合わせ例
mysql> SELECT DATE_FORMAT('2024-05-10', GET_FORMAT(DATE, 'EUR')) AS result;
+------------+
| result |
+------------+
| 10.05.2024 |
+------------+
1 row in set (0.00 sec)
mysql> SELECT STR_TO_DATE('10.05.2024', GET_FORMAT(DATE, 'EUR')) AS result;
+------------+
| result |
+------------+
| 2024-05-10 |
+------------+
1 row in set (0.00 sec)
このようにGET_FORMAT()を活用すれば、フォーマット文字列を手作業で書くことなく、各地域の標準的な書式を簡単に適用できます。多言語・多地域対応のアプリケーションを開発する際に特に重宝する関数です。
-
MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説
MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字
-
C言語のprintfにおける%pフォーマット指定子の使い方と役割
C言語には、%dや%sなど、さまざまなフォーマット指定子が用意されています。その中でも今回は、ポインタ型のデータを出力するためのフォーマット指定子「%p」について解説します。%pとは何か%pは、printf関数においてポインタ(メモリアドレス)の値を表示するために使用される変換指定子です。通常、アドレスは16進数形式で出力されます。具体的な動作を、以下のサンプルコードで確認してみましょう。サンプルコード#include <stdio.h> int main(void) { int x = 50; int *ptr = &x; /* 変数xのアドレスをpt