sql >> データベース >  >> RDS >> MariaDB

MariaDBのHOUR()とEXTRACT(HOUR…):違いは何ですか?

    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 |
    +-------------------+--------------------------------+


    1. テーブルから最大値で始まるOracleシーケンスを作成するにはどうすればよいですか?

    2. Galera ClusterRecovery101-ネットワークパーティショニングの詳細

    3. GROUPBYおよび集計連続数値

    4. IntentServiceがアプリケーションUIをフリーズしています