MariaDBにはHOUR()
があります 時間値から時間部分を抽出する関数。 MariaDBにはEXTRACT()
もあります 時間値から時間部分を抽出することもできる関数。
ただし、これらの関数が常に同じ結果を返すとは限りません。
HOUR()
の違いを確認するために読んでください およびEXTRACT(HOUR FROM ...)
MariaDBで。
違い
HOUR()
およびEXTRACT(HOUR FROM ...)
時間式が時刻式の場合、どちらも同じ値を返します。つまり、時間の部分が0
の間にある場合 および23
、その後、同じ結果を返します。
時間の部分が23
より大きい場合、違いが現れます。 。
TIME
値の範囲は'-838:59:59.999999'
です。 to '838:59:59.999999'
、ただし、時刻の値は0
の間のみにすることができます および23
。
時間式が0
の外にある場合 および23
範囲:
-
HOUR()
式から実際の時間部分を返します(範囲内にある限り'-838:59:59.999999'
to'838:59:59.999999'
–この範囲外の場合は、838
を返します。 ) -
EXTRACT(HOUR FROM ...)
0
の間の値を返します および23
。時間がこの範囲外の場合は、EXTRACT()
0
を繰り返します および23
0
の間の値を返すために必要な回数 および23
。
例
実例を示します。
SELECT
HOUR('24:00:00'),
EXTRACT(HOUR FROM '24:00:00');
結果:
+------------------+-------------------------------+ | HOUR('24:00:00') | EXTRACT(HOUR FROM '24:00:00') | +------------------+-------------------------------+ | 24 | 0 | +------------------+-------------------------------+
HOUR()
関数は提供された実際の時間を返しますが、EXTRACT()
0
を返します 。これは、24
23
よりも高い 、これは最大値ですEXTRACT()
時間の部分に戻ります。この場合、EXTRACT()
0
からカウントを再開します 。
これは必要な回数だけ実行されるため、結果は常に0
の間になります。 および23
。
時間の部分がはるかに大きい別の例を次に示します。
SELECT
HOUR('742:00:00'),
EXTRACT(HOUR FROM '742:00:00');
結果:
+-------------------+--------------------------------+ | HOUR('742:00:00') | EXTRACT(HOUR FROM '742:00:00') | +-------------------+--------------------------------+ | 742 | 22 | +-------------------+--------------------------------+