PostgreSQL 提供了全套工业级的日期与时间处理类型。最为核心的是时间戳类型:
timestamp with time zone(简写为 timestamptz):带时区的时间戳。在存入数据库时,所有传入的不同时区时间均会被统一转换为世界标准时间(UTC)物理持久化;在客户端查询读取时,系统会自动将其转换为当前会话所在的本地时区呈现。在分布式跨地域业务中,应当始终优先选用 timestamptz。
timestamp without time zone(简写为 timestamp):无时区时间戳。原样存储字面时间,完全不感知任何时区偏移。
date:专用于存储纯日历日期(不含具体时间)。
time:专用于存储一天当中的时间(不含日期)。
interval:用于表示时间跨度或时间增量(例如 1 day 2 hours),支持与时间戳直接进行加减算术运算。