以下は、MariaDBの時間値から秒の部分を返すことを可能にする4つの関数です。
SECOND() 機能
SECOND() 関数は、指定されたTIMEの秒部分を返します またはDATETIME 表現。秒を抽出する時間である1つの引数を受け入れます。
例:
SELECT SECOND('03:45:30'); 結果:
+--------------------+
| SECOND('03:45:30') |
+--------------------+
| 30 |
+--------------------+
TIME 値の範囲は'-838:59:59.999999'です。 to '838:59:59.999999' 。これにはマイクロ秒が含まれますが、SECOND() 秒の部分だけを返します(MICROSECOND()があります マイクロ秒を返す関数)。
TIME 値は負になることもあります。このような場合、SECOND() 正の値を返します。
マイクロ秒の部分を含む負の時間値は次のとおりです。
SELECT SECOND('-838:59:59.999999'); 結果:
+-----------------------------+
| SECOND('-838:59:59.999999') |
+-----------------------------+
| 59 |
+-----------------------------+ 秒の部分は期待どおりに抽出されます。
EXTRACT() 機能
EXTRACT() 関数を使用すると、日付/時刻の値から指定された単位を抽出できます。したがって、これを使用して、時間値から秒(および他の単位)を抽出できます。
例:
SELECT EXTRACT(SECOND FROM '10:47:01'); 結果:
+---------------------------------+ | EXTRACT(SECOND FROM '10:47:01') | +---------------------------------+ | 1 | +---------------------------------+
TIME_FORMAT() 機能
TIME_FORMAT() 関数を使用すると、フォーマット文字列に基づいて時間値をフォーマットできます。 format文字列は、時刻のフォーマット方法を指定します。
したがって、この関数を使用して、時刻からの秒(および分と時間)を返すことができます。
%s および%S フォーマット指定子は両方とも2桁の秒を返します:
SELECT
TIME_FORMAT('10:07:30', '%s'),
TIME_FORMAT('10:07:30', '%S'); 結果:
+-------------------------------+-------------------------------+
| TIME_FORMAT('10:07:30', '%s') | TIME_FORMAT('10:07:30', '%S') |
+-------------------------------+-------------------------------+
| 30 | 30 |
+-------------------------------+-------------------------------+
$fを使用することもできます 6桁のサブ秒を返すフォーマット指定子:
SELECT
TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both"; 結果:
+--------------+-----------+ | Microseconds | Both | +--------------+-----------+ | 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', '%s'); 結果:
+------------------------------------------+
| DATE_FORMAT('2023-01-01 10:07:30', '%s') |
+------------------------------------------+
| 30 |
+------------------------------------------+
TIMEだけを渡す 値はこの関数では機能しません:
SELECT DATE_FORMAT('10:07:30', '%s') AS '%s'; 結果:
+------+ | %s | +------+ | 00 | +------+