GaussDB PG 支持的标准日期时间类型详解【华为根技术】
【摘要】 一、GaussDB PG 支持的标准日期时间类型GaussDB PG 完全兼容 PostgreSQL 的日期时间类型体系,常用类型包括:类型名称描述存储空间示例值DATE仅存储日期(年、月、日)4 字节2024-05-20TIME [WITHOUT TIME ZONE]仅存储时间(时、分、秒),默认无时区8 字节14:30:45TIMESTAMP [WITHOUT TIME ZONE]存...
一、GaussDB PG 支持的标准日期时间类型
GaussDB PG 完全兼容 PostgreSQL 的日期时间类型体系,常用类型包括:
类型名称 | 描述 | 存储空间 | 示例值 |
---|---|---|---|
DATE |
仅存储日期(年、月、日) | 4 字节 | 2024-05-20 |
TIME [WITHOUT TIME ZONE] |
仅存储时间(时、分、秒),默认无时区 | 8 字节 | 14:30:45 |
TIMESTAMP [WITHOUT TIME ZONE] |
存储日期和时间(年、月、日、时、分、秒),默认无时区 | 8 字节 | 2024-05-20 14:30:45 |
TIMESTAMP WITH TIME ZONE |
存储日期、时间及时区信息(实际存储为 UTC 时间+时区偏移) | 12 字节 | 2024-05-20 14:30:45+08 |
二、“DATETIME”类型的替代方案
若您习惯使用 DATETIME
类型(常见于 MySQL),在 GaussDB PG 中可通过以下方式替代:
1. 直接使用 TIMESTAMP WITHOUT TIME ZONE
DATETIME
在标准 SQL 中通常等价于 TIMESTAMP WITHOUT TIME ZONE
(无时区的日期时间)。GaussDB PG 完全支持此类型,可直接替代:
-- 创建表时使用 TIMESTAMP 替代 DATETIME
CREATE TABLE example (
id INT,
event_time TIMESTAMP WITHOUT TIME ZONE -- 等价于 MySQL 的 DATETIME
);
-- 插入数据(格式兼容)
INSERT INTO example VALUES (1, '2024-05-20 14:30:45');
2. 若需有时区信息,使用 TIMESTAMP WITH TIME ZONE
若业务需要记录时区(如跨时区的日志),推荐使用 TIMESTAMPTZ
(TIMESTAMP WITH TIME ZONE
的缩写):
CREATE TABLE timezone_example (
log_id INT,
log_time TIMESTAMPTZ -- 存储带时区的时间戳(自动转换为 UTC 存储)
);
-- 插入带时区的时间(会自动转换为 UTC)
INSERT INTO timezone_example VALUES (1, '2024-05-20 14:30:45+08'); -- 实际存储为 2024-05-20 06:30:45 UTC
三、注意事项
-
类型别名与兼容性
GaussDB PG 支持部分类型别名(如TIMESTAMPTZ
是TIMESTAMP WITH TIME ZONE
的别名),但建议使用标准名称以避免歧义。 -
时间格式解析
GaussDB PG 支持多种时间格式(如YYYY-MM-DD HH24:MI:SS
、YYYYMMDDHH24MISS
),插入时需确保格式与声明的类型匹配。若需自定义格式,可使用TO_TIMESTAMP
函数显式转换:-- 将字符串 '20240520143045' 转换为 TIMESTAMP SELECT TO_TIMESTAMP('20240520143045', 'YYYYMMDDHH24MISS'); -- 结果:2024-05-20 14:30:45
-
时区处理
TIMESTAMP WITHOUT TIME ZONE
仅存储本地时间,不涉及时区转换,适合业务逻辑明确不跨时区的场景(如本地业务日志)。TIMESTAMP WITH TIME ZONE
存储的是 UTC 时间+时区信息,适合需要跨时区同步的场景(如全球用户行为记录)。
四、总结
GaussDB PG 模式下完全支持标准的日期时间类型,若需替代“DATETIME”,推荐使用 TIMESTAMP WITHOUT TIME ZONE
(无时区)或 TIMESTAMP WITH TIME ZONE
(有时区)。根据业务需求选择即可,两者均能满足大部分日期时间存储与计算场景。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)