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 的当前日期。
本教程是否有帮助?
© .