MySQL で現在の日付と時刻を取得する
今日は、MySQL で現在の日付と時刻を取得するために、NOW()、CURRENT_TIMESTAMP() (CURRENT_TIMESTAMP とも呼ばれます)、および SYSDATE() を学習します。 また、これら 3つの機能の比較も見ていきます。
MySQL で現在の日付と時刻を取得する
MySQL で現在の日付と時刻を取得する方法は 3つあります。 これらのメソッドには、NOW()、CURRENT_TIMESTAMP() が含まれ、CURRENT_TIMESTAMP、SYSDATE() とも表記されます。 次のように、INSERT ステートメントで簡単に使用できます。
コード例:
# use NOW()
INSERT INTO student_attendance(ID, ATTENDANCE)
VALUES(1, NOW());
# use CURRENT_DATETIME
INSERT INTO student_attendance(ID, ATTENDANCE)
VALUES(1, CURRENT_DATETIME);
# use SYSDATE()
INSERT INTO student_attendance(ID, ATTENDANCE)
VALUES(1, SYSDATE());
現在の日付と時刻を挿入する方法は複数あるため、それらの違いを理解することが重要です。
上記の方法のいずれかをいつ、どこで使用するかを明確にします。 NOW()、CURRENT_TIMESTAMP() および SYSDATE() の簡単な比較を以下に示します。
NOW() 関数
日付と時刻は、使用しているコンテキストに応じて NOW() メソッドによって返されます。 たとえば、コンテキストが文字列の場合、NOW() メソッドは日付と時刻を "YYYY-MM-DD HH-MM-SS" の文字列形式で返します。
関数が数値コンテキストを使用する場合、YYYYMMDDHHMMSS のような数値形式で返されます。 この特定のステートメントの実行が開始された時刻を示す一定の時間を返します。
MySQL バージョン 4.0 以降で使用できます。
CURRENT_TIMESTAMP() 関数
CURRENT_TIMESTAMP() を CURRENT_TIMESTAMP と書くこともできます。 関数が文字列コンテキストまたは数値コンテキストを使用する場合、現在の日付と時刻を "YYYY-MM-DD HH-MM-SS" または YYYYMMDDHHMMSS として返します。
CURRENT_TIMESTAMP の同義語には、NOW() および CURRENT_TIMESTAMP() 関数が含まれます。 次のクエリを実行して、同じ出力を確認します。
SELECT NOW(), CURRENT_TIMESTAMP, CURRENT_TIMESTAMP();
出力:
NOW() |
CURRENT_TIMESTAMP |
CURRENT_TIMESTAMP() |
|---|---|---|
| 2022-04-26 11:40:25 | 2022-04-26 11:40:25 | 2022-04-26 11:40:25 |
MySQL バージョン 4.0 以降で使用できます。 また、この特定のクエリの実行が開始された時刻を表す一定の時刻も出力します。
SYSDATE() 関数
NOW() および CURRENT_TIMESTAMP() 関数と同様に、この関数で使用されるコンテキストに応じて、現在の日付と時刻も返します。 コンテキストは、文字列または数値にすることができます。
文字列および数値コンテキストの場合、それぞれ "YYYY-MM-DD HH:MM:SS" および YYYYMMDDHHMMSS として返されます。 SYSDATE() 関数は、クエリが実行された正確な時刻を返します。
MySQL のドキュメント を読んだ後、SYSDATE() と NOW() の間には微妙な違いがあると言えます。 NOW()、CURRENT_TIMESTAMP、および CURRENT_TIMESTAMP() は同じ結果を返すことに注意してください。
次のクエリを実行して違いを確認します。
SELECT NOW(), SYSDATE(), CURRENT_TIMESTAMP(),
SLEEP(5), NOW(), SYSDATE(),CURRENT_TIMESTAMP();
出力:

上記の出力では、SLEEP() 関数の前後に SYSDATE() 関数によって生成された結果を除いて、すべてが一定のままです。 NOW() メソッドは、クエリの実行開始時刻を表す一定の時間を返します。
トリガーまたはストアド プロシージャ (ストアド関数とも呼ばれます) では、NOW() は、トリガーとなるステートメントまたは関数の実行が開始される時刻を出力します。 SYSDATE() は実行 (実行) された正確な時刻を返します。
