SQL 日期和时间

在 SQL 中,有不同的数据类型来帮助我们处理日期和时间。

示例

-- create a table with different date and time fields
CREATE TABLE Users (
  id INT,
  full_name VARCHAR(50),
  date_of_birth DATE,
  last_login DATETIME,
  registered_at TIMESTAMP
);

-- insert values into the Users table.
INSERT INTO Users
VALUES
(1, 'Harry Potter', '1999-04-14', '2022-04-22 10:34:53.44', '2020-03-15 07:31:42.23');

这里,Users 表中的 date_of_birthlast_loginregistered_at 列分别被指定为 DATEDATETIMETIMESTAMP 数据类型。


SQL 中的日期和时间数据类型

处理日期和时间可能会很棘手,因为日期格式可能因各种原因而异。例如,美国采用 mm-dd-yyyy 的日期格式,而英国采用 dd-mm-yyyy 的日期格式。

此外,不同的数据库系统使用不同的数据类型来存储日期和时间。以下是不同数据库系统如何存储日期和时间的快速概述。

示例 格式 SQL Server Oracle MySQL PostgreSQL
2022-04-22 10:34:23 YYYY-MM-DD hh:mm:ss DATETIME TIMESTAMP
2022-04-22 YYYY-MM-DD DATE DATE DATE
10:34:23 hh:mm:ss.nn TIME TIME TIME TIME
2022-04-22 10:34:23.55 YYYY-MM-DD hh:mm:ss.nn DATETIME TIMESTAMP
2022 YYYY YEAR
22年1月12日 DD-MON-YY TIMESTAMP

每个数据库中可用的日期函数太多。但是,在本教程中,我们将遵循 Microsoft SQL Server 中常用的日期函数。


使用日期查询记录

我们还可以运行查询以按日期筛选记录。例如,

-- get the records of those teams
-- who registered on October 11, 2020
SELECT *
FROM Teams
WHERE registered = "2020-10-11";

这里,SQL 命令返回在 2020-10-11(即 2020 年 10 月 11 日)注册的团队。

让我们看另一个例子,

-- get the records of those teams
-- who registered after October 12, 2020
SELECT *
FROM Teams
WHERE registered > "2022-10-12";

这里,SQL 命令只选择在 2022-10-12 之后注册的团队。


常用日期函数

GETDATE()

此函数用于获取当前日期和时间。例如,

SELECT GETDATE();

这里,该函数返回当前日期和时间。


CURRENT_TIMESTAMP

此函数用于获取系统中的当前时间戳。例如,

SELECT CURRENT_TIMESTAMP;

这里,该函数返回系统中的当前时间戳。


DATEDIFF(date_part, start_date, end_date)

此函数用于确定两个日期之间的差异。例如,

SELECT DATEDIFF(month, '2020-12-31 23:59:59', '2022-01-01 00:00:00');
-- output: 13

这里,该函数返回两个日期之间以月为单位的差异。

输出 13 表示 2020-12-31 23:59:592022-01-01 00:00:00 之间存在 13 个月的差异。

您可以类似地找出年、日、小时等方面的差异。


DATEADD(date_part, number, date)

此函数用于将数字添加到给定日期的部分。例如,

SELECT DATEADD(month, 1, '2022-08-31');
-- output: 2022-09-30 00:00:00

这里,该函数将 1 添加到日期 2022-08-31月份部分。

注意事项

  • 由于我们的在线编辑器基于 SQLite,因此不支持 GETDATE()DATEDIFF()DATEADD() 函数。
  • 尽管我们只讨论了 SQL Server 中使用的几个函数,但其他数据库中还有其他几个函数。请参考每个数据库的文档以获取参考。

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战