MySQL で現在の日付と時刻を取得する

Mehvish Ashiq 2023年6月20日
  1. MySQL で現在の日付と時刻を取得する
  2. NOW() 関数
  3. CURRENT_TIMESTAMP() 関数
  4. SYSDATE() 関数
MySQL で現在の日付と時刻を取得する

今日は、MySQL で現在の日付と時刻を取得するために、NOW()CURRENT_TIMESTAMP() (CURRENT_TIMESTAMP とも呼ばれます)、および SYSDATE() を学習します。 また、これら 3つの機能の比較も見ていきます。

MySQL で現在の日付と時刻を取得する

MySQL で現在の日付と時刻を取得する方法は 3つあります。 これらのメソッドには、NOW()CURRENT_TIMESTAMP() が含まれ、CURRENT_TIMESTAMPSYSDATE() とも表記されます。 次のように、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();

出力:

mysql で現在の日付と時刻を取得 - now vs sysdate vs currenttimestamp

上記の出力では、SLEEP() 関数の前後に SYSDATE() 関数によって生成された結果を除いて、すべてが一定のままです。 NOW() メソッドは、クエリの実行開始時刻を表す一定の時間を返します。

トリガーまたはストアド プロシージャ (ストアド関数とも呼ばれます) では、NOW() は、トリガーとなるステートメントまたは関数の実行が開始される時刻を出力します。 SYSDATE() は実行 (実行) された正確な時刻を返します。

著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook