MariaDBでは、SYSDATE()
およびNOW()
関数は、現在の日付と時刻を返すという点で似ています。
ただし、重要な違いがあります:SYSDATE()
NOW()
に対して、実行時間を返します。 ステートメントの実行が開始された時刻を返します。
また、ストアドプロシージャまたはトリガー内で実行する場合は、SYSDATE()
NOW()
に対して、実行時間を返します。 ストアドプロシージャまたはトリガーの実行が開始された時刻を返します。
例
まず、これら2つの関数がどのように異なる結果を生成できるかを見てみましょう。
SELECT
NOW(),
SYSDATE(),
SLEEP(5),
NOW(),
SYSDATE();
結果(垂直出力を使用):
NOW(): 2021-05-27 09:22:08 SYSDATE(): 2021-05-27 09:22:08 SLEEP(5): 0 NOW(): 2021-05-27 09:22:08 SYSDATE(): 2021-05-27 09:22:13
ここでは、SLEEP()
を使用しました 関数呼び出しの2番目のロットの前に5秒間処理を一時停止する関数。
2回目はSYSDATE()
が呼び出されたとき、その戻り値は最初とは異なりました。 NOW()
一方、両方の時間で同じ値を返しました。
その他の考慮事項
これらの2つの機能で注意すべき点が他にもいくつかあります。
-
SET TIMESTAMP
SYSDATE()
には影響しません 、一方、しますNOW()
に影響を与える 働き。 -
SYSDATE()
ステートメントベースのバイナリロギングが使用されている場合、レプリケーションは安全ではありません。ただし、必要に応じて、これに対処する方法があります。--sysdate-is-now
を使用できます コマンドは、エイリアスSYSDATE()
のデフォルト以外のオプションです。NOW()
へ 複製を安全にするため。SYSDATE()
についてはMariaDBのドキュメントを参照してください 詳細については。