摘要:在本教程中,您将学习如何使用 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的当前日期。