以下は、MariaDBの時刻値から時間を返すことができる4つの関数です。
HOUR() 機能
HOUR() 関数は、指定されたTIMEの時間を返します またはDATETIME 表現。 1つの引数を受け入れます。これは、時間を抽出する時間です。
例:
SELECT HOUR('03:45:30'); 結果:
+------------------+
| HOUR('03:45:30') |
+------------------+
| 3 |
+------------------+
時刻の値の場合、0の範囲の数値として時間を返します。 23へ 。ただし、TIMEの範囲 値ははるかに大きくなる可能性があるため、戻り値は23よりもはるかに大きくなる可能性があります。 。具体的には、TIME 値の範囲は'-838:59:59.999999'です。 to '838:59:59.999999' 。
時間の部分が大きい例を次に示します。
SELECT HOUR('838:45:30'); 結果:
+-------------------+
| HOUR('838:45:30') |
+-------------------+
| 838 |
+-------------------+
時間がTIMEの許容範囲外の場合 値の場合、戻り値は838です。 警告付き。
TIME 値は負になることもあります。このような場合、HOUR() 正の値を返します。
EXTRACT() 機能
EXTRACT() 関数を使用すると、日付/時刻の値から指定された単位を抽出できます。したがって、これを使用して、時間値から時間(および他の単位)を抽出できます。
例:
SELECT EXTRACT(HOUR FROM '10:47:01'); 結果:
+-------------------------------+ | EXTRACT(HOUR FROM '10:47:01') | +-------------------------------+ | 10 | +-------------------------------+
TIME_FORMAT() 機能
TIME_FORMAT() 関数を使用すると、フォーマット文字列に基づいて時間値をフォーマットできます。 format文字列は、時刻のフォーマット方法を指定します。
したがって、この関数を使用して、時刻から時(および分と秒)を返すことができます。時間を返すためのさまざまなオプションがあります。
さまざまな形式で時間を返す例を次に示します。
SELECT
TIME_FORMAT('18:45:30', '%H') AS '%H',
TIME_FORMAT('18:45:30', '%h') AS '%h',
TIME_FORMAT('18:45:30', '%I') AS '%I',
TIME_FORMAT('18:45:30', '%k') AS '%k',
TIME_FORMAT('18:45:30', '%l') AS '%l'; 結果:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | 18 | 06 | 06 | 18 | 6 | +------+------+------+------+------+
これらの各フォーマット指定子の説明は次のとおりです。
| フォーマット指定子 | 説明 |
|---|---|
%H | 00〜23の間に2桁の時間。 |
%h | 01から12までの2桁の時間。 |
%I | 01から12までの2桁の時間。 |
%k | 0〜23の間に1桁の時間。 |
%l | 1〜12の間に1桁の時間。 |
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 18:45:30', '%H') AS '%H',
DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l'; 結果:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | 18 | 06 | 06 | 18 | 6 | +------+------+------+------+------+
TIMEだけを渡す 値は、この関数では完全にはカットされません:
SELECT
DATE_FORMAT('18:45:30', '%H') AS '%H',
DATE_FORMAT('18:45:30', '%h') AS '%h',
DATE_FORMAT('18:45:30', '%I') AS '%I',
DATE_FORMAT('18:45:30', '%k') AS '%k',
DATE_FORMAT('18:45:30', '%l') AS '%l'; 結果:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+ 1 row in set, 5 warnings (0.000 sec)
警告を表示する:
SHOW WARNINGS; 結果:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '18:45:30' | | Warning | 1292 | Incorrect datetime value: '18:45:30' | | Warning | 1292 | Incorrect datetime value: '18:45:30' | | Warning | 1292 | Incorrect datetime value: '18:45:30' | | Warning | 1292 | Incorrect datetime value: '18:45:30' | +---------+------+--------------------------------------+