SQL CURRENT_DATE 函式

摘要:在本教程中,您將學習如何使用 SQL CURRENT_DATE 函式獲取當前日期。

SQL CURRENT_DATE 函式簡介 #

CURRENT_DATE 函式返回資料庫伺服器所在機器的當前日期。

這是 CURRENT_DATE 函式的語法:

CURRENT_DATECode language: SQL (Structured Query Language) (sql)

請注意,CURRENT_DATE 函式不需要括號,因為它是 SQL 中的一個保留字。

CURRENT_DATE 函式返回一個不帶時間部分的 DATE 型別的值。

在實踐中,您會發現 CURRENT_DATE 函式在將日期與當前日期進行比較和篩選時非常有用。

SQL CURRENT_DATE 函式示例 #

讓我們看一些使用 CURRENT_DATE 函式的例子。

檢索當前日期 #

以下語句使用 CURRENT_DATE 函式檢索當前日期:

SELECT CURRENT_DATE AS today;Code language: SQL (Structured Query Language) (sql)

試一試

這是我們在 2025年1月20日 執行該語句時的輸出:

   today
------------
 2025-01-20Code language: SQL (Structured Query Language) (sql)

輸出表明日期格式為 YYYY-MM-DD,這是日期的 ISO 標準格式。

使用 CURRENT_DATE 函式作為預設值 #

建立新表或向現有表新增列時,您可以將 CURRENT_DATE 函式用作列的預設值。例如:

首先,建立一個名為 salary_changes 的新表,該表使用 CURRENT_DATE 函式作為列的預設值:

CREATE TABLE salary_changes (
  employee_id INT NOT NULL,
  changed_date DATE NOT NULL DEFAULT CURRENT_DATE,
  salary DEC NOT NULL,
  PRIMARY KEY (employee_id, changed_date)
);Code language: SQL (Structured Query Language) (sql)

試一試

其次,向 salary_changes插入一個新行

INSERT INTO
  salary_changes (employee_id, salary)
VALUES
  (100, 25000);Code language: SQL (Structured Query Language) (sql)

試一試

當您插入一個新行而沒有為 changed_date 列提供值時,資料庫系統會使用當前日期作為該列的值。

第三,從 salary_changes 表中檢索資料

SELECT * FROM salary_changes;Code language: SQL (Structured Query Language) (sql)

試一試

這是我們在 2025年1月20日 執行插入語句時的輸出:

 employee_id | changed_date | salary
-------------+--------------+--------
         100 | 2025-01-20   |  25000Code language: SQL (Structured Query Language) (sql)

與其他日期比較 #

您可以使用 CURRENT_DATE 函式與其他日期進行比較。

例如,以下語句查詢今天之前有薪資變動的員工:

SELECT
  first_name,
  last_name,
  s.salary new_salary
FROM
  salary_changes s
  INNER JOIN employees e ON e.employee_id = s.employee_id
WHERE
  changed_date < CURRENT_DATE;Code language: SQL (Structured Query Language) (sql)

試一試

從當前日期增加或減少天數 #

您可以從當前日期增加或減少一個時間間隔。例如:

SELECT CURRENT_DATE + INTERVAL '7 DAY' AS next_week,
       CURRENT_DATE - INTERVAL '7 DAY' AS last_week;Code language: SQL (Structured Query Language) (sql)

在 Oracle 資料庫和 SQL Server 中獲取當前日期 #

Oracle 資料庫的 CURRENT_DATE 函式返回一個包含日期和時間的值。要獲取不帶時間的當前日期,您可以使用 TRUNC 函式來截斷時間部分:

SELECT
  TRUNC(CURRENT_DATE)
FROM
  dual;Code language: SQL (Structured Query Language) (sql)

SQL Server 不支援 CURRENT_DATE 函式。但是,它提供了一個名為 GETDATE() 的函式,該函式返回當前日期和時間。

要獲取當前日期,您需要將 CAST() 函式與 GETDATE() 函式結合使用,如下面的語句所示:

SELECT CAST(GETDATE() AS DATE) 'Current Date';Code language: SQL (Structured Query Language) (sql)

摘要 #

  • 使用 SQL CURRENT_DATE 函式返回格式為 YYYY-MM-DD 的當前日期。
本教程是否有幫助?
© .