PostgreSQL时间类型有哪些

来源:建站教程作者:日本程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《PostgreSQL时间类型有哪些》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《PostgreSQL时间类型有哪些》有用,将其分享出去将是对创作者最好的鼓励。

PostgreSQL时间类型概述

PostgreSQL内置了多种时间相关数据类型,覆盖了日期、时间、日期时间组合、时间间隔等不同维度的存储需求,不同类型对应不同的存储精度和适用场景,开发者可以根据实际业务需要选择合适的类型。

PostgreSQL常用时间类型详解

1. date类型

date类型用于存储日期信息,不包含具体的时间部分,存储范围为公元前4713年到公元5874897年,占用4字节存储空间。适合只需要记录日期不需要时间精度的场景,比如生日、订单日期、签到日期等。

使用示例:

-- 创建包含date类型字段的表
CREATE TABLE user_info (
    id INT PRIMARY KEY,
    username VARCHAR(50),
    birthday DATE
);

-- 插入date类型数据
INSERT INTO user_info (id, username, birthday) VALUES (1, '张三', '1998-05-20');
INSERT INTO user_info (id, username, birthday) VALUES (2, '李四', '2000-12-01');

-- 查询date类型数据
SELECT username, birthday FROM user_info WHERE birthday > '1999-01-01';

2. time类型

time类型用于存储时间信息,不包含日期部分,默认精度为秒,最大可以支持微秒精度,存储范围为00:00:00到24:00:00,占用4到8字节存储空间,具体大小取决于时间精度。适合只需要记录时间不需要日期的场景,比如每天的营业开始时间、打卡时间等。

使用示例:

-- 创建包含time类型字段的表,指定精度为微秒
CREATE TABLE shop_info (
    id INT PRIMARY KEY,
    shop_name VARCHAR(50),
    open_time TIME(6),
    close_time TIME(6)
);

-- 插入time类型数据
INSERT INTO shop_info (id, shop_name, open_time, close_time) VALUES (1, '便利店', '08:00:00', '22:30:00');
INSERT INTO shop_info (id, shop_name, open_time, close_time) VALUES (2, '咖啡店', '07:30:00.123456', '21:00:00.000000');

3. timestamp类型

timestamp类型同时存储日期和时间信息,分为timestamp without time zone和timestamp with time zone两种子类型。前者不存储时区信息,后者会存储时区信息并在查询时根据会话时区进行转换。存储范围为公元前4713年到公元294276年,占用8字节存储空间,是业务中最常用的时间类型之一。

使用示例:

-- 创建包含两种timestamp类型的表
CREATE TABLE order_record (
    order_id INT PRIMARY KEY,
    create_time TIMESTAMP WITHOUT TIME ZONE,
    pay_time TIMESTAMP WITH TIME ZONE
);

-- 插入timestamp数据
INSERT INTO order_record (order_id, create_time, pay_time) VALUES (1001, '2024-03-15 14:30:00', '2024-03-15 14:35:00+08');
INSERT INTO order_record (order_id, create_time, pay_time) VALUES (1002, '2024-03-15 15:00:00', '2024-03-15 15:10:00+08');

4. interval类型

interval类型用于存储时间间隔,比如1天、3小时、2个月15天等,可以表示正负的时间间隔,存储大小为12字节,支持年、月、日、时、分、秒等不同维度的间隔表示。适合需要计算时间差、时间偏移的场景,比如计算订单超时时间、活动持续时间等。

使用示例:

-- 计算订单创建后30分钟的超时时间
SELECT order_id, create_time, create_time + INTERVAL '30 minutes' AS timeout_time FROM order_record;

-- 计算两个时间的间隔
SELECT order_id, pay_time - create_time AS pay_duration FROM order_record;

时间类型对比

不同时间类型的特点和适用场景对比如下:

类型名称存储内容存储空间适用场景
date日期4字节仅需记录日期,如生日、签到日期
time时间4-8字节仅需记录时间,如营业时间、打卡时间
timestamp without time zone日期+时间(无时区)8字节本地时间业务,无需时区转换
timestamp with time zone日期+时间(带时区)8字节跨时区业务,需要自动时区转换
interval时间间隔12字节时间差计算、时间偏移计算

选型建议

在实际开发中,如果只需要日期选择date类型,只需要时间选择time类型,需要完整的日期时间且业务不涉及跨时区可以选择timestamp without time zone,涉及多时区业务优先选择timestamp with time zone,需要计算时间差或者时间偏移则搭配使用interval类型。同时需要注意,timestamp with time zone类型在存储时会转换为UTC时间,查询时再根据当前会话的时区转换回对应时间,使用时需要确认会话时区设置是否正确。

PostgreSQL时间类型datetimestampinterval修改时间:2026-06-25 15:30:41

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。