Module 03 · Intermediate SQL
Date and Time Built-in Functions SQL日期和时间函数
您好,欢迎来到 SQL 日期和时间函数 课程。
学习目标
完成本课程后,您将能够:
- 定义日期和时间函数。
- 讨论日期或时间运算。
一、SQL 中的日期和时间数据类型
大多数数据库都包含用于日期和时间的特殊数据类型。在 SQL 中,常见的类型包括:DATE、TIME 和 TIMESTAMP。
| 类型 | 长度 | 格式说明 | 示例格式 |
|---|---|---|---|
DATE |
8 位数字 | YYYYMMDD (年、月、日) |
20251204 |
TIME |
6 位数字 | HHMMSS (时、分、秒) |
033856 |
TIMESTAMP |
20 位数字 | YYYYXXDDHHMMSSZZZZZZ |
年(4位) + 月(XX, 2位) + 日(2位) + 时(2位) + 分(2位) + 秒(2位) + 微秒(ZZZZZZ, 6位) |
📌 注意: 在
TIMESTAMP格式中,XX代表月份,ZZZZZZ代表微秒。
提取函数
存在用于从日期和时间值中提取特定部分的功能函数,例如:
- 日期部分:
DAY(日)、MONTH(月)、DAYOFMONTH(月的某天)、DAYOFWEEK(周几)、DAYOFYEAR(一年的第几天)、WEEK(周)。 - 时间部分:
HOUR(小时)、MINUTE(分钟)、SECOND(秒)。
日期和时间函数查询示例
- 使用 DAY 提取日部分:
例如,获取涉及“猫”(cat)的每次救援的日部分:
SQL
SELECT DAY(RESCUE_DATE) FROM PETRESCUE WHERE ANIMAL = 'cat';
- 在 WHERE 子句中使用函数:
日期和时间函数也可以用于 WHERE 子句中。
例如,获取五月(即月份 5)期间的销售总数:
SQL
SELECT COUNT(*) FROM PETRESCUE WHERE MONTH(RESCUE_DATE) = 5;
二、日期或时间运算
SQL 支持对日期和时间值执行算术运算。
| 运算目的 | 示例 SQL 语句 | 结果 |
|---|---|---|
| 日期加法 | SELECT DATE_ADD(RESCUE_DATE, INTERVAL 3 DAY) FROM PETRESCUE; |
计算每个救援日期之后的第三天的日期。(可能用于订单需在三天内处理等场景。) |
| 日期减法 | SELECT CURRENT_DATE - RESCUE_DATE FROM PETRESCUE; |
计算从每个救援日期到当前日期(CURRENT_DATE 寄存器)之间经过了多少天。 |
特殊寄存器 (Special Registers)
CURRENT_TIME: 返回当前的时间。CURRENT_DATE: 返回当前的日期。
日期减法结果:
CURRENT_DATE - RESCUE_DATE的结果将以年、月、日的形式返回。
总结
- SQL 包含
DATE、TIME和TIMESTAMP数据类型。DATE有 8 位数字(YYYYMMDD)。TIME有 6 位数字(HHMMSS)。TIMESTAMP有 20 位数字(YYYYXXDDHHMMSSZZZZZZ),其中XX是月份,ZZZZZZ是微秒。
- 存在用于提取日期和时间部分(如
DAY、MONTH、HOUR、MINUTE、SECOND等)的函数。 - 日期和时间函数可以用于
WHERE** 子句**中。 DAY函数可用于提取日期的日部分。