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

MariaDBでのSYSDATE()のしくみ

    MariaDBでは、SYSDATE() は、現在の日付と時刻を返す組み込みの日付と時刻の関数です。

    関数が実行された時刻を返します(ステートメントが実行された時刻とは異なる場合があります)。

    戻り値は'YYYY-MM-DD HH:MM:SS'で返されます またはYYYYMMDDHHMMSS.uuuuuu 関数が文字列または数値のどちらのコンテキストで使用されているかに応じて、形式。

    戻り値は現在のタイムゾーンで表されます。

    マイクロ秒の精度を指定するオプションもあります。

    構文

    構文は次のようになります:

    SYSDATE([precision])

    ここでprecision マイクロ秒の精度を指定するオプションの引数です。

    次に例を示します:

    SELECT SYSDATE();

    結果:

    +---------------------+
    | SYSDATE()           |
    +---------------------+
    | 2021-05-27 08:40:41 |
    +---------------------+

    数値コンテキスト

    SYSDATE()の場合 数値コンテキストで使用される場合、結果はYYYYMMDDHHMMSS.uuuuuuになります。 フォーマット。

    例:

    SELECT
        SYSDATE(),
        SYSDATE() + 0;

    結果:

    +---------------------+----------------+
    | SYSDATE()           | SYSDATE() + 0  |
    +---------------------+----------------+
    | 2021-05-27 08:41:19 | 20210527084119 |
    +---------------------+----------------+

    精度

    マイクロ秒の精度を指定する例を次に示します。

    SELECT
        SYSDATE(6),
        SYSDATE(6) + 0;

    結果:

    +----------------------------+-----------------------+
    | SYSDATE(6)                 | SYSDATE(6) + 0        |
    +----------------------------+-----------------------+
    | 2021-05-27 08:41:44.561665 | 20210527084144.562263 |
    +----------------------------+-----------------------+

    マイクロ秒の精度の最大値は6です。精度に高い数値が渡されると、次のようになります。

    SELECT SYSDATE(12);

    結果:

    ERROR 1426 (42000): Too big precision 12 specified for 'sysdate'. Maximum is 6

    SYSDATE() vs NOW()

    SYSDATE() NOW()に似ています 機能、違いがあります。

    主な違いの1つは、SYSDATE() NOW()に対して、実行時間を返します。 ステートメントの実行が開始された時刻を返します。ストアドプロシージャまたはトリガー内で実行する場合、NOW() ストアドプロシージャまたはトリガーの実行が開始された時刻を返します。

    この違いを示す例を次に示します。

    SELECT 
        NOW(),
        SYSDATE(),
        SLEEP(5),
        NOW(),
        SYSDATE();

    結果(垂直出力を使用):

        NOW(): 2021-05-27 08:47:06
    SYSDATE(): 2021-05-27 08:47:06
     SLEEP(5): 0
        NOW(): 2021-05-27 08:47:06
    SYSDATE(): 2021-05-27 08:47:11

    この場合、SLEEP()を使用しました 関数呼び出しの2番目のロットの前に5秒間処理を一時停止する関数。

    2回目はSYSDATE() が呼び出されたとき、その戻り値は最初とは異なりました。 NOW() 一方、両方の時間で同じ値を返しました。

    SYSDATE()を使用する際には、他にも注意すべき点がいくつかあります。 。たとえば、SET TIMESTAMP 影響しません(影響します NOW()に影響を与える 働き)。また、SYSDATE() ステートメントベースのバイナリロギングが使用されている場合、レプリケーションは安全ではありません。ただし、必要に応じて、これに対処する方法があります。詳細については、MariaDBのドキュメントを参照してください。


    1. MariaDBでのDAYOFMONTH()のしくみ

    2. MySQLの各グループの最初の行を選択するにはどうすればよいですか?

    3. MySQLでテーブルの照合を表示する方法

    4. テーブルOracleを動的にピボットする