私の知る限りでは、
SYSDATE(),
NOW(),
CURRENT_TIMESTAMP, and
CURRENT_TIMESTAMP()
MySQL では、これらは互いに同義語です。 それらはすべて同じ値を返しますが、なぜ MySQL はこれらすべてを提供しているのでしょうか? 特定の 1 つを使用できるさまざまなシナリオがあるのでしょうか?
ベストアンサー1
それらはすべて同義語ではありません。
SYSDATE()
は、とは大きく異なりますNOW()
。例として、
SELECT NOW(), SYSDATE(), SLEEP(5), NOW(), SYSDATE()
出力は次のようになります。
(ウォーリーを探せをプレイして違いを見つけます。最後の式からの戻り値が異なり、5 秒の遅延後の SYSDATE の 2 回目の呼び出しで 5 秒異なる値が返されます)
2018-03-01 11:09:19
2018-03-01 11:09:19
0
2018-03-01 11:09:19
2018-03-01 11:09:24
SYSDATE()
(ではなく を使用したいシナリオもありますNOW()
)
MySQLは同じ結果を返すことができる様々な式を提供する
DATE(NOW())
対CURRDATE()
これは、Oracle、SQL Server などで使用されている関数名と構文に (可能かつ適切な場合) より厳密に一致させることで、他のリレーショナル DBMS からの移行を容易にしたいという要望が大きな理由であると思われます。