Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
CURRENT_DATE / NOW
現在の日付や日時を取得する関数・式です。システム時刻をSQLで参照したいときに使用します。
構文
-- 現在の日付を取得します(標準SQL)。 SELECT CURRENT_DATE; -- 現在の時刻を取得します(標準SQL)。 SELECT CURRENT_TIME; -- 現在の日時を取得します(標準SQL)。 SELECT CURRENT_TIMESTAMP; -- 現在の日時を取得します(MySQL 関数)。 SELECT NOW(); -- クエリ実行時点の日時を取得します(MySQL)。 SELECT SYSDATE();
構文一覧
| 構文 | 概要 |
|---|---|
| CURRENT_DATE | 現在の日付を『DATE』型(YYYY-MM-DD形式)で返します。標準SQLで括弧は不要です。 |
| CURRENT_TIME | 現在の時刻を『TIME』型(HH:MM:SS形式)で返します。標準SQLで括弧は不要です。 |
| CURRENT_TIMESTAMP | 現在の日時を『TIMESTAMP』型で返します。標準SQLで括弧は不要です。 |
| NOW() | MySQLで現在の日時を返します。ステートメント開始時刻を返す点が特徴です。 |
| SYSDATE() | MySQLでSQL実行時点の日時を返します。NOW()と異なり、呼び出しのたびに異なる値を返す場合があります。 |
サンプルコード
-- 現在日付を取得します。 SELECT CURRENT_DATE AS today; -- 現在日時を取得します。 SELECT NOW() AS current_datetime; -- 今日が期限内の注文を取得します。 SELECT order_id, product_name, due_date FROM orders WHERE due_date >= CURRENT_DATE; -- レコードに現在日時を登録します。 INSERT INTO access_logs (user_id, accessed_at) VALUES (101, NOW()); -- 現在日時と比較して期限切れの会員を取得します。 SELECT member_id, name, expire_date FROM members WHERE expire_date < CURRENT_DATE;
実行結果
-- SELECT CURRENT_DATE AS today; の結果例 -- +------------+ -- | today | -- +------------+ -- | 2025-10-15 | -- +------------+ -- SELECT NOW() AS current_datetime; の結果例 -- +---------------------+ -- | current_datetime | -- +---------------------+ -- | 2025-10-15 14:32:07 | -- +---------------------+
データベース別の書き方
『CURRENT_DATE』『CURRENT_TIME』『CURRENT_TIMESTAMP』は標準SQLであり、MySQL・PostgreSQL・SQLite で共通して使用できます。
SELECT CURRENT_DATE; SELECT CURRENT_TIMESTAMP;
Oracle では『CURRENT_DATE』は日時を返します。日付のみが必要な場合は『TRUNC(SYSDATE)』を使用します。また、現在日時の取得には『SYSDATE』を使用します。
-- 現在の日時を取得します(Oracle)。 SELECT SYSDATE FROM DUAL; -- 現在のタイムスタンプを取得します(Oracle)。 SELECT CURRENT_TIMESTAMP FROM DUAL;
SQL Server では『CURRENT_TIMESTAMP』が使用できます。より高精度な日時には『SYSDATETIME()』を使用します。『CURRENT_DATE』は使用できないため、『CAST(GETDATE() AS DATE)』で代用します。
-- 現在の日時を取得します(SQL Server)。 SELECT CURRENT_TIMESTAMP; SELECT GETDATE(); -- 現在の日付のみを取得します(SQL Server)。 SELECT CAST(GETDATE() AS DATE);
概要
『CURRENT_DATE』『CURRENT_TIME』『CURRENT_TIMESTAMP』は標準SQLで定義された式であり、MySQLでもPostgreSQLでも動作します。一方、『NOW()』はMySQL独自の関数で、ステートメント開始時刻を返します。トランザクション内で複数回呼び出しても同じ値を返すため、一貫性が保たれます。
『SYSDATE()』はSQL実行時点の実際の時刻を返すため、同一ステートメント内でも呼び出しのたびに異なる値になる場合があります。通常は『NOW()』を使用するほうが安全です。
日付を加算・減算するには『DATE_ADD / DATEDIFF』を、日付から年や月を取り出すには『EXTRACT / FORMAT』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。