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