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

MariaDBの時間値からマイクロ秒を抽出する4つの関数

    以下は、MariaDBの時間値からマイクロ秒の部分を返すことを可能にする4つの関数です。

    MICROSECOND() 機能

    MICROSECOND() 関数は、指定されたTIMEのマイクロ秒部分を返します またはDATETIME 表現。マイクロ秒を抽出する時間である1つの引数を受け入れます。

    例:

    SELECT MICROSECOND('10:45:30.123456');

    結果:

    +--------------------------------+
    | MICROSECOND('10:45:30.123456') |
    +--------------------------------+
    |                         123456 |
    +--------------------------------+

    TIME 値の範囲は'-838:59:59.999999'です。 to '838:59:59.999999'

    TIME 値は負になることもあります。このような場合、MICROSECOND() 正の値を返します。

    マイクロ秒の部分を含む負の時間値は次のとおりです。

    SELECT MICROSECOND('-838:59:59.999999');

    結果:

    +----------------------------------+
    | MICROSECOND('-838:59:59.999999') |
    +----------------------------------+
    |                           999999 |
    +----------------------------------+

    マイクロ秒の部分は期待どおりに抽出されます。

    EXTRACT() 機能

    EXTRACT() 関数を使用すると、日付/時刻の値から指定された単位を抽出できます。したがって、これを使用して、時間値からマイクロ秒(および他の単位)を抽出できます。

    例:

    SELECT EXTRACT(MICROSECOND FROM '10:45:30.123456');

    結果:

    +---------------------------------------------+
    | EXTRACT(MICROSECOND FROM '10:45:30.123456') |
    +---------------------------------------------+
    |                                      123456 |
    +---------------------------------------------+

    TIME_FORMAT() 機能

    TIME_FORMAT() 関数を使用すると、フォーマット文字列に基づいて時間値をフォーマットできます。 format文字列は、時刻のフォーマット方法を指定します。

    したがって、この関数を使用して、時刻からマイクロ秒(および時間、分、秒)を返すことができます。

    %f フォーマット指定子はマイクロ秒を返します:

    SELECT TIME_FORMAT('10:07:30.003456', '%f');

    結果:

    +--------------------------------------+
    | TIME_FORMAT('10:07:30.003456', '%f') |
    +--------------------------------------+
    | 003456                               |
    +--------------------------------------+

    $sを使用することもできます または$S 秒の部分を返すフォーマット指定子:

    SELECT 
        TIME_FORMAT('10:07:30.123456', '%s') AS "Seconds",
        TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
        TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";

    結果:

    +---------+--------------+-----------+
    | Seconds | Microseconds | Both      |
    +---------+--------------+-----------+
    | 30      | 123456       | 30.123456 |
    +---------+--------------+-----------+

    TIME_FORMAT() 関数は、DATE_FORMAT()で使用できるフォーマット文字列のサブセットを受け入れます 働き。 DATE_FORMAT()で使用できるフォーマット文字列/指定子の完全なリストについては、MariaDBフォーマット文字列を参照してください。 。 TIME_FORMAT() 関数は、時間、分、および秒/サブ秒のフォーマット指定子のみを受け入れます。その他の形式指定子は、nullになります。 または0 返送されます。

    DATE_FORMAT() 機能

    DATE_FORMAT() 関数を使用すると、フォーマット文字列に基づいて日付または日時の値をフォーマットできます。フォーマット文字列は、日付/時刻のフォーマット方法を指定します。

    したがって、TIME_FORMAT()で使用したものと同じ形式指定子を使用できます。 前の例の関数。ただし、DATE_FORMAT() TIMEを受け入れません 値なので、DATETIMEを渡す必要があります 値。

    SELECT DATE_FORMAT('2023-01-01 10:07:30.007123', '%f');

    結果:

    +-------------------------------------------------+
    | DATE_FORMAT('2023-01-01 10:07:30.007123', '%f') |
    +-------------------------------------------------+
    | 007123                                          |
    +-------------------------------------------------+

    TIMEだけを渡す 値はこの関数では機能しません:

    SELECT DATE_FORMAT('10:07:30.007123', '%f');

    結果:

    +--------------------------------------+
    | DATE_FORMAT('10:07:30.007123', '%f') |
    +--------------------------------------+
    | NULL                                 |
    +--------------------------------------+
    1 row in set, 1 warning (0.003 sec)

    警告を見てみましょう:

    SHOW WARNINGS;

    結果:

    +---------+------+---------------------------------------------+
    | Level   | Code | Message                                     |
    +---------+------+---------------------------------------------+
    | Warning | 1292 | Incorrect datetime value: '10:07:30.007123' |
    +---------+------+---------------------------------------------+

    1. マネージドPostgreSQLクラウドソリューションのベンチマーク-パート1:Amazon Aurora

    2. SQLServerGUIDの並べ替えアルゴリズム。なんで?

    3. 文字列がJSONであるかどうかをテストする方法は?

    4. SQLiteでRandomBlob()がどのように機能するか