言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

  1. トップページ
  2. SQL辞典
  3. CURRENT_DATE / NOW

CURRENT_DATE / NOW

対応: SQL-92(1992)

現在の日付や日時を取得する関数・式です。システム時刻を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()と異なり、呼び出しのたびに異なる値を返す場合があります。

サンプルコード

以下の『members』テーブルを例に説明します。

members member_id name expire_date 1 岡部倫太郎 2026-03-31 2 牧瀬紅莉栖 2025-12-31 3 椎名まゆり 2026-06-30 3 rows in set

現在日付を取得します。

sample_current_date_now.sql
SELECT CURRENT_DATE AS today;
+------------+
| today      |
+------------+
| 2026-03-16 |
+------------+
1 row in set

現在日時を取得します。

sample_current_date_now.sql
SELECT NOW() AS current_datetime;
+---------------------+
| current_datetime    |
+---------------------+
| 2026-03-16 14:32:07 |
+---------------------+
1 row in set

有効期限が今日以降の会員を取得します。

sample_current_date_now.sql
SELECT member_id, name, expire_date
FROM members
WHERE expire_date >= CURRENT_DATE;
+-----------+------------+-------------+
| member_id | name       | expire_date |
+-----------+------------+-------------+
|         1 | 岡部倫太郎 |  2026-03-31 |
|         3 | 椎名まゆり |  2026-06-30 |
+-----------+------------+-------------+
2 rows in set

有効期限を現在日時で更新します。

sample_current_date_now.sql
UPDATE members
SET expire_date = NOW()
WHERE member_id = 2;
Query OK, 1 row affected (0.01 sec)
SELECT member_id, name, expire_date
FROM members
WHERE member_id = 2;
+-----------+------------+---------------------+
| member_id | name       | expire_date         |
+-----------+------------+---------------------+
|         2 | 牧瀬紅莉栖 | 2026-03-16 14:32:07 |
+-----------+------------+---------------------+
1 row in set

現在日時と比較して期限切れの会員を取得します。

sample_current_date_now.sql
SELECT member_id, name, expire_date
FROM members
WHERE expire_date < CURRENT_DATE;
+-----------+------------+-------------+
| member_id | name       | expire_date |
+-----------+------------+-------------+
|         2 | 牧瀬紅莉栖 |  2025-12-31 |
+-----------+------------+-------------+
1 row in set

データベース別の書き方

MySQL / MariaDB

『CURRENT_DATE』『CURRENT_TIME』『CURRENT_TIMESTAMP』と、MySQL固有の『NOW()』『SYSDATE()』が使用できます。

SELECT CURRENT_DATE;
SELECT CURRENT_TIMESTAMP;
SELECT NOW();

PostgreSQL

『CURRENT_DATE』『CURRENT_TIME』『CURRENT_TIMESTAMP』が使用できます。現在の日時には『NOW()』も使用できます。

SELECT CURRENT_DATE;
SELECT CURRENT_TIMESTAMP;
SELECT NOW();

SQLite

SQLite では『CURRENT_DATE』『CURRENT_TIME』『CURRENT_TIMESTAMP』が使用できます。日時は文字列(TEXT型)で返されます。

SELECT CURRENT_DATE;
SELECT CURRENT_TIMESTAMP;
SELECT date('now');
SELECT datetime('now');

概要

『CURRENT_DATE』『CURRENT_TIME』『CURRENT_TIMESTAMP』は標準SQLで定義された式であり、MySQLでもPostgreSQLでも動作します。一方、『NOW()』はMySQL独自の関数で、ステートメント開始時刻を返します。トランザクション内で複数回呼び出しても同じ値を返すため、一貫性が保たれます。

『SYSDATE()』はSQL実行時点の実際の時刻を返すため、同一ステートメント内でも呼び出しのたびに異なる値になる場合があります。通常は『NOW()』を使用するほうが安全です。

日付を加算・減算するには『DATE_ADD / DATEDIFF』を、日付から年や月を取り出すには『EXTRACT / FORMAT』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。