跳到主要内容

SQL日期和时间

提示

1.数据类型介绍:SQL中的日期和时间数据类型包括 DATEDATETIMETIMESTAMP 等,用于存储和处理日期和时间信息。

2.日期格式差异:不同国家/地区对日期格式的处理可能不同,例如美国采用 mm-dd-yyyy 格式,而英国则采用 dd-mm-yyyy 格式。

3.数据库系统中的日期和时间数据类型:不同的数据库系统(如 SQL Server、Oracle、MySQL、PostgreSQL)支持不同的日期和时间数据类型,并提供各种日期相关函数,如 GETDATE()CURRENT_TIMESTAMPDATEDIFF()DATEADD() 等。

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

示例

CREATE TABLE Users (
id INT,
full_name VARCHAR(50),
date_of_birth DATE,
last_login DATETIME,
registered_at TIMESTAMP
);

-- 向 Users 表中插入值。
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 ServerOracleMySQLPostGreSQL
2022-04-22 10:34:23YYYY-MM-DD hh:mm:ssDATETIMETIMESTAMP
2022-04-22YYYY-MM-DDDATEDATEDATE
10:34:23hh:mm:ss.nnTIMETIMETIMETIME
2022-04-22 10:34:23.55YYYY-MM-DD hh:mm:ss.nnDATETIMETIMESTAMP
2022YYYYYEAR
12-Jan-22DD-MON-YYTIMESTAMP

每个数据库中都有很多日期函数可用。然而,在本教程中,我们将主要关注 Microsoft SQL Server 中常用的日期函数。

使用日期查询记录

我们也可以运行查询来检索按日期过滤的记录。例如,

SELECT *
FROM Teams
WHERE registered = "2020-10-11";

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

让我们看另一个例子,

SELECT *
FROM Teams
WHERE registered > "2022-10-12";

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

常用日期函数

GETDATE()

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

SELECT GETDATE();

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

CURRENT_TIMESTAMP

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

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

DATEDIFF(date_part, start_date, end_date)

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

SELECT DATEDIFF(month, '2020-12-31 23:59:59', '2022-01-01 00:00:00');
-- 输出: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');
-- 输出:2022-09-30 00:00:00

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

注意事项:

  • GETDATE()DATEDIFF()DATEADD() 函数不受我们在线编辑器的支持,因为它基于 SQLite。
  • 虽然我们只讨论了 SQL Server 中使用的几个函数,但在其他数据库中使用了许多其他函数。请参阅每个数据库的文档以供参考。