MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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_typestandard_format戻り値
DATEUSA%m.%d.%Y
JIS%Y-%m-%d
ISO%Y-%m-%d
EUR%d.%m.%Y
INTERNAL%Y%m%d
DATETIME/TIMESTAMPUSA%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
TIMEUSA%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()を活用すれば、フォーマット文字列を手作業で書くことなく、各地域の標準的な書式を簡単に適用できます。多言語・多地域対応のアプリケーションを開発する際に特に重宝する関数です。

  1. MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説

    MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字

  2. 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