sql >> データベース >  >> RDS >> Mysql

MySQLで日付と時刻をフォーマットする方法

    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   |
    +-------------+----------+----------+----------+----------+
    


    1. MHAに関する主な一般的な問題とその修正方法

    2. OracleのNLS_COLLATION_NAME()関数

    3. サブクエリを使用せずに最大シーケンスの行のみを選択する方法は?

    4. SQL Serverで「datetime」を「smalldatetime」に変換する(T-SQLの例)