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を繰り返します および230の間の値を返すために必要な回数 および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 |
+-------------------+--------------------------------+