以下は、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' | +---------+------+---------------------------------------------+