GBase 8c
适配迁移
文章

GBase8c日期/时间类型

发表于2026-01-06 10:56:0125次浏览2个评论

GBase8c 支持标准的 SQL 日期和时间数据类型,包括 ‌:ml-search-more[DATE]{text="DATE"}**‌、‌**TIME‌、‌:ml-search-more[TIMESTAMP]{text="TIMESTAMP"}**‌ 和 ‌**INTERVAL‌,这些类型用于存储日期、时间或两者组合的数据,并允许指定精度以控制秒域中小数点后的位数。‌12

GBase8c 支持的日期/时间类型及其特性如下:

  • DATE‌:仅存储日期部分,不包含时间。存储空间为 4 字节,取值范围从 ‌4713 BC‌ 到 ‌5874897 AD‌,精度为 1 日。
  • TIME [p] [WITHOUT TIME ZONE]‌:存储一天中的时间(无时区),存储空间为 8 字节,取值范围从 ‌00:00:00‌ 到 ‌24:00:00‌,精度默认为 1 微秒(14 位)。
  • TIME [p] WITH TIME ZONE‌:存储带时区的时间,存储空间为 12 字节,取值范围从 ‌00:00:00+1459‌ 到 ‌24:00:00-1459‌,精度为 1 微秒。
  • TIMESTAMP [p] [WITHOUT TIME ZONE]‌:存储日期和时间(无时区),存储空间为 8 字节,取值范围从 ‌4713 BC‌ 到 ‌294276 AD‌,精度为 1 微秒。
  • TIMESTAMP [p] WITH TIME ZONE‌:存储带时区的日期和时间,存储空间为 8 字节,取值范围与无时区版本相同,精度为 1 微秒。
  • INTERVAL [fields] [p]‌:表示时间间隔,存储空间为 16 字节,取值范围从 ‌-178000000年‌ 到 ‌178000000年‌,精度为 1 微秒。
    其中,p 为可选精度参数,范围从 0 到 6,用于控制秒域的小数位数;所有类型均支持标准输入格式(如 ISO-8601),并可通过 :ml-search-more[DateStyle]{text="DateStyle"} 参数调整解析顺序(如 MDY、DMY 或 YMD)。‌23

在使用日期/时间类型时,需注意以下事项:

  • 精度与存储‌:精度 p 仅影响秒域的小数位数,不改变存储空间;例如 TIMESTAMP(3) 表示毫秒级精度。
  • 时区处理‌:带时区的类型(如 TIMESTAMP WITH TIME ZONE)会存储时区信息,而无时区类型则忽略时区。
  • 操作符与函数‌:使用日期/时间操作符(如加减)时,需明确指定类型前缀(如 DATE '2022-01-01'),以避免解析错误;内置函数(如 :ml-search-more[current_date]{text="current_date"}:ml-search-more[extract]{text="extract"})可用于日期计算和提取。
  • 特殊值与兼容性‌:GBase8c 支持日期/时间类型的特殊值(如 infinity),并在读取时转换为普通值;其日期类型与 Oracle 的 DATE 类型兼容,但行为可能不同,例如 :ml-search-more[add_months]{text="add_months"} 函数的处理逻辑。‌

评论

登录后才可以发表评论
GBase用户47954发表于 5个月前
感谢作者的精彩分享!
崔哥发表于 4个月前
古木阴中系短篷,杖藜扶我过桥东。沾衣欲湿杏花雨,吹面不寒杨柳风。