SQL道場 日付時刻関数 NOW関数

SQLで現在の日付と時刻を得るNOW関数について記載しています。

対応データベース:MySQL PostgreSQL Access

NOW関数の文法

SELECT NOW() FROM テーブル
引数なし
返値日付型 現在の日付と時刻が戻ります。

NOW関数は、現在の日付と時刻を取得します。 ‘YYYY-MM-DD hh:mm:ss’ または YYYYMMDDhhmmss 形式で取得できます。

関数が文字列または数値のどちらのコンテキストで使用されているかに応じて、現在の日時を’YYYY-MM-DD hh:mm:ss’または YYYYMMDDhhmmss 形式の値として返します。 値はセッションのタイムゾーンで表されます。

0 から 6 までの小数秒精度を指定するために fsp 引数が指定されている場合、戻り値にはその桁数の小数秒部分が含まれます。

NOW() は、ステートメントが実行を開始する時刻を示す定数時間を返します。 (ストアドファンクションまたはトリガーでは、NOW() は関数またはトリガーステートメントが実行を開始する時間を返します。) これは、正確な実行時間を返す SYSDATE() の動作とは異なります。

さらに、SET TIMESTAMP ステートメントによって、NOW() で返された値は影響を受けますが、SYSDATE() で返された値は影響を受けません。 つまり、バイナリログのタイムスタンプ設定は、SYSDATE() の呼び出しに影響しないことを意味します。 タイムスタンプをゼロ以外の値に設定すると、後続の NOW() が起動されるたびに、その値が返されます。 タイムスタンプをゼロに設定すると、この効果が取り消され、再度 NOW() が現在の日付と時間を返すようになります。

2 つの関数の相違点についての詳細は、SYSDATE() の説明を参照してください。

https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_now

NOW() と SYSDATE() には、異なる点があります。NOW() はファンクションやトリガーを含め、ステートメントの実行を開始した日時を返すのに対して、SYSDATE() は実行された日時を返します。

実行例

MySQLの実行例

/* MySQL 現在の日付と時間を取得するサンプル */
SELECT NOW();
NOW関数サンプル実行結果