MySQLでは、DATE_FORMAT()
関数を使用すると、日付と時刻をフォーマットできます。
次に例を示します:
SELECT DATE_FORMAT('2018-12-01', '%W, %d %M %Y');
結果:
Saturday, 01 December 2018
この例では、%W
平日の名前は%d
はその月の日、%M
月用で、%Y
年です。時間コンポーネントだけでなく、日付の正確なフォーマットを指定できるようにする、利用可能なフォーマット指定子は他にもたくさんあります。
時間コンポーネントのフォーマット
時間コンポーネントをフォーマットする例を次に示します。
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p');
結果:
11:03:15 AM
この例では、%p
AMまたはPMのいずれかを表示するために使用されます。
もちろん、これらを組み合わせて、日付と時刻の両方を一度にフォーマットすることもできます。
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p, %W, %d %M %Y');
結果:
11:03:15 AM, Saturday, 01 December 2018
日付/時刻関数を使用したフォーマット
多くの場合、DATE_FORMAT()
を使用することをお勧めします 別の日付/時刻関数と一緒に。たとえば、CURDATE()
と一緒に使用できます 適切にフォーマットされた現在の日付を返すには:
SELECT CURDATE() AS Unformatted, DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') AS Formatted;
結果:
+-------------+----------------------+ | Unformatted | Formatted | +-------------+----------------------+ | 2018-05-04 | Friday, May 04, 2018 | +-------------+----------------------+
NOW()
を使用してこれを行うこともできます 時間が必要な場合は機能します:
SELECT NOW() AS Unformatted, DATE_FORMAT(NOW(), '%r') AS Formatted;
結果:
+---------------------+-------------+ | Unformatted | Formatted | +---------------------+-------------+ | 2018-05-04 14:33:52 | 02:33:52 PM | +---------------------+-------------+
TIME_FORMAT()関数
MySQLにはTIME_FORMAT()
もあります 時間をフォーマットするために使用できる関数。この関数は、DATE_FORMAT()
と同様に機能します ただし、TIME_FORMAT()
フォーマット指定子は、時間、分、秒、マイクロ秒のみ受け入れます。
例:
SET @time = '07:35:10'; SELECT TIME_FORMAT(@time, '%H') AS Hour, TIME_FORMAT(@time, '%i') AS Minute, TIME_FORMAT(@time, '%s') As Seconds, TIME_FORMAT(@time, '%p') AS 'AM or PM';
結果:
+------+--------+---------+----------+ | Hour | Minute | Seconds | AM or PM | +------+--------+---------+----------+ | 07 | 35 | 10 | AM | +------+--------+---------+----------+
STR_TO_DATE()関数
STR_TO_DATE()
関数はDATE_FORMAT()
の逆です 働き。これにより、日付としてフォーマットする文字列を提供できます。 2つのパラメータを受け入れます。文字列と形式。
次に例を示します:
SELECT STR_TO_DATE('Saturday, 6 December 2018', '%W, %d %M %Y') AS Date;
結果:
+------------+ | Date | +------------+ | 2018-12-06 | +------------+
正しい日付形式を見つける方法
MySQLには、GET_FORMAT()
と呼ばれる便利な小さな関数があります。 。この関数は、DATE_FORMAT()
を使用するときに使用する正しい形式を見つけるのに役立ちます 関数および/またはSTR_TO_DATE()
関数。
仕組みは次のとおりです。
SELECT GET_FORMAT(DATE, 'USA');
これにより、次のようになります。
%m.%d.%Y
これは、DATE_FORMAT()
で日付をフォーマットするときに使用する必要のあるフォーマット文字列を示しています。 働き。たとえば、その例の結果を取得して、DATE_FORMAT()
に適用できます。 機能:
SELECT DATE_FORMAT(NOW(), '%m.%d.%Y');
そして、最終的には望ましい結果が得られます:
05.04.2018
GET_FORMAT()
を渡すこともできます DATE_FORMAT()
に直接 必要に応じて。
SELECT DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'USA'));
結果:
05.04.2018
いずれにせよ、以下はさまざまなオプションの例です。
日付
SELECT GET_FORMAT(DATE, 'USA') AS USA, GET_FORMAT(DATE, 'JIS') AS JIS, GET_FORMAT(DATE, 'ISO') AS ISO, GET_FORMAT(DATE, 'EUR') AS EUR, GET_FORMAT(DATE, 'INTERNAL') AS INTERNAL;
結果:
+----------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +----------+----------+----------+----------+----------+ | %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d | +----------+----------+----------+----------+----------+
日時
SELECT GET_FORMAT(DATETIME, 'USA') AS USA, GET_FORMAT(DATETIME, 'JIS') AS JIS, GET_FORMAT(DATETIME, 'ISO') AS ISO, GET_FORMAT(DATETIME, 'EUR') AS EUR, GET_FORMAT(DATETIME, 'INTERNAL') AS INTERNAL;
結果:
+-------------------+-------------------+-------------------+-------------------+--------------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------------+-------------------+-------------------+-------------------+--------------+ | %Y-%m-%d %H.%i.%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H.%i.%s | %Y%m%d%H%i%s | +-------------------+-------------------+-------------------+-------------------+--------------+
時間
SELECT GET_FORMAT(TIME, 'USA') AS USA, GET_FORMAT(TIME, 'JIS') AS JIS, GET_FORMAT(TIME, 'ISO') AS ISO, GET_FORMAT(TIME, 'EUR') AS EUR, GET_FORMAT(TIME, 'INTERNAL') AS INTERNAL;
結果:
+-------------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------+----------+----------+----------+----------+ | %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s | +-------------+----------+----------+----------+----------+