MySQLのNOW()
、SYSDATE()
、CURRENT_DATE()
の違いと実際のシナリオで使用できる場所.
テーブルにデータを挿入し、列のデータ型がTIMESTAMP
であるときに、NOW()
、SYSDATE()
、Current_Date()
を試してみました。
Current_date()は日付のみを提供します。
now()は、ステートメント、手順などが開始された日時を示します。
sysdate()は、現在の日時を提供します。
次のクエリを使用して、now()1 sysdate()1の間に5秒待機した後の秒数を確認します(右にスクロールします)。
select now()、sysdate()、current_date()、sleep(5)、now()、sysdate(); -は を与えます-now()sysdate()current_date()sleep(5)now()1 sysdate()1 -2014/10/10 2:50:04 AM 2014/10/10 2:50: 04 AM 6/10/2014 12:00:00 AM 0 6/10/2014 2:50:04 AM 6/10/2014 2:50:09 AM
NOW()
は、ステートメントが実行を開始した時間を示す一定の時間を返します。 (ストアド関数またはトリガー内では、_NOW(
_)は、関数またはトリガーステートメントが実行を開始した時刻を返します。これは、正確な時刻を返すSYSDATE()
の動作とは異なります。実行します。
_mysql> SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+
| NOW() | SLEEP(2) | NOW() |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |
+---------------------+----------+---------------------+
mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE() | SLEEP(2) | SYSDATE() |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |
+---------------------+----------+---------------------+
_
Current_dateはクライアントのタイムスタンプを返し、sysdateはサーバーのタイムスタンプを返します。サーバーとクライアントの両方が同じマシン上にある場合、両方のコマンドの結果は同じです。ただし、サーバーが米国にあり、クライアントが中国にある場合、これら2つの関数はまったく異なる結果を返します。
Thew now()については知りません、すみません:-)
CURRENT_DATE()
は、dateのみを提供する他の多くの同様の関数の同義語です。 NOW()
とSYSDATE()
には微妙な違いがありますが、これについて詳しく読むことができます。
MySQLの公式Webサイト ページ。