在 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_birth
、last_login
和 registered_at
列分别被指定为 DATE
、DATETIME
和 TIMESTAMP
数据类型。
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:59
和 2022-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 中使用的几个函数,但其他数据库中还有其他几个函数。请参考每个数据库的文档以获取参考。
另请阅读