CodeGym /课程 /SQL SELF /用于日期和时间操作的数据类型: DATETIME, ...

用于日期和时间操作的数据类型: DATETIMETIMESTAMP

SQL SELF
第 15 级 , 课程 4
可用

你是不是经常遇到需要处理日期和时间的应用?比如在线下单、日程安排、数据库变更历史——这些都离不开正确存储时间。PostgreSQL 给我们提供了很强大的工具来搞定这些数据,别担心,时间表可不是一堆乱七八糟的小时和分钟,而是让你能分析和整理事件的清晰结构。

日期和时间类型可以让你:

  • 只存日期 DATE,只存时间 TIME,或者两者一起 TIMESTAMP
  • 做各种操作,比如加天数、算日期差、按时间条件筛选记录。
  • 支持时区操作(不过这个以后再讲)。

数据类型:DATETIMETIMESTAMP

DATE 数据类型

DATE 类型就是只存日期,不带时间。它会记录年、月、日。啥时候用它比较合适:

  • 比如要存用户的生日。
  • 只关心事件发生哪天,不在乎具体几点。

格式示例:YYYY-MM-DD(年-月-日)。

例子:

id name - VARCHAR(100) event_date - DATE
1 SQL Workshop 2025-06-15
2 Python 2025-06-17
3 Java Courses 2025-06-25

TIME 数据类型

TIME 类型就是只存时间。啥时候用它:

  • 比如要存作息表,比如上班开始时间。
  • 只关心几点几分,不在乎哪天。

格式示例:HH:MI:SS(小时:分钟:秒)。

例子:

id task_name - VARCHAR(100) start_time - TIME
1 Team Meeting 09:00:00
2 Code Review 11:30:00
3 Client Call 15:00:00

TIMESTAMP 数据类型

TIMESTAMP 就是日期和时间的组合。啥时候用它:

  • 比如要记录某个时刻,比如用户登录系统的时间。
  • 需要时间戳来追踪变化(日志)。

格式示例:YYYY-MM-DD HH:MI:SS(年-月-日 小时:分钟:秒)。

例子:

id action - VARCHAR(100) login_time - TIMESTAMP
1 User Login 2023-10-15 14:30:00
2 File Uploaded 2023-10-15 15:10:00
3 User Logout 2023-10-15 16:45:00

日期和时间的操作

现在知道有这些类型了,咱们来看看怎么用。PostgreSQL 自带了很多内置函数,能让你轻松搞定日期和时间的各种操作。

提取日期和时间的部分

如果你有个时间戳(TIMESTAMP),想只拿出年份、月份、天数或者小时,用 EXTRACT 函数就行。

例子:

SELECT EXTRACT(YEAR FROM TIMESTAMP '2025-06-15 14:30:00') AS year;
-- 结果: 2025

SELECT EXTRACT(MONTH FROM TIMESTAMP '2025-06-15 14:30:00') AS month;
-- 结果: 06

SELECT EXTRACT(DAY FROM TIMESTAMP '2025-06-15 14:30:00') AS day;
-- 结果: 15

加减时间间隔

想知道一周后是啥时候?或者昨天是哪天?用 interval 操作就行。

例子:

-- 给当前日期加7天
SELECT CURRENT_DATE + INTERVAL '7 days' AS next_week;

-- 减去1个月
SELECT CURRENT_DATE - INTERVAL '1 month' AS last_month;

日期比较

怎么判断事件是不是已经发生?比找 bug 还简单——直接比大小就行。

例子:

SELECT event_date
FROM events
WHERE event_date < CURRENT_DATE;
-- 选出所有已经过去的事件

更多关于时间和日期函数的内容,咱们后面还会讲。现在你只要记住有这些类型就够了。

时区问题和时间标准

虽然这节课还不细讲时区,但得提一句,PostgreSQL 支持 TIMESTAMPTZ(带时区的时间戳)类型。比如 2023-10-15 14:30:00+02,就表示这个时间属于 UTC+2 时区。

我们后面肯定会详细讲这个话题,别急 :P

例子

现在来实操一下,检验下刚学的知识。我们来建个表,专门存学生的课程表。

id subject_name class_date - DATE start_time - TIME end_time - TIME created_at - TIMESTAMP
1 Mathematics 2023-10-16 09:00:00 10:30:00 2023-10-12 14:00:00
2 Physics 2023-10-16 11:00:00 12:30:00 2023-10-12 14:00:00
3 Chemistry 2023-10-17 09:00:00 10:30:00 2023-10-12 14:01:00
4 Literature 2023-10-17 11:00:00 12:30:00 2023-10-12 14:01:00
5 Computer Science 2023-10-18 10:00:00 11:30:00 2023-10-12 14:02:00

再过几节课你就能用 SQL 语句自己建这种表了。现在先欣赏一下吧 :)

常见错误

日期和时间格式: 插入数据时一定要用对格式:日期用 YYYY-MM-DD,时间用 HH:MI:SS。PostgreSQL 如果你写成 "15/10/2023" 可能就不认了。

数据类型不匹配: 想往 DATE 字段塞文本会报错。

时间间隔错误: 比如你给二月加30天,PostgreSQL 会自动算,但结果可能已经到三月了。

现在你已经了解了 PostgreSQL 里处理日期和时间的数据类型。在实际项目里,这能帮你搞定课程表、事件日志、系统重要事件追踪啥的!

1
调查/小测验
数字类型数据第 15 级,课程 4
不可用
数字类型数据
数字类型数据
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION