gbase

导航

GBase 8a date数据类型1582前后闰年计算规则不一致问题

1、1582年前后闰年计算规则简述

1582年以前:闰年的计算规则为四年一闰;

1582年之后:置闰规则分为普通闰年和世纪闰年。

普通闰年:公历年份是4的倍数,但不是100的倍数,

世纪闰年:公历年份是整百数的,必须是400的倍数。

2、date数据类型1582前后闰年计算规则不一致问题

8a集群在处理date数据类型的闰年计算规则时,默认按照1582年之后的闰年计算规则进行处理,所以对于1582年之前的闰年日期例如1000-02-29,执行insert(报错:Incorrect date value:)或load(数据跳过)操作时,数据无法正常入库。

为解决该问题,引入新参数gbase_enable_julian_calendar,默认状态为OFF,参数具体说明如下:

(1)不开启此参数(OFF状态),1582年前后的闰年计算规则均按照1582年之后的计算规则,即普通闰年(公历年份是4的倍数,但不是100的倍数)和世纪闰年(公历年份是整百数的,必须是400的倍数)来判断;

(2)开启此参数后(ON状态),在1582年以前,闰年计算规则按照四年一闰计算,1582年之后,置闰规则按照普通闰年(公历年份是4的倍数,但不是100的倍数)和世纪闰年(公历年份是整百数的,必须是400的倍数)来计算。

但使用该参数时尤其是做导出操作时需要特别注意,数据入库时的参数开启状态需要与导出数据文件时的参数开启状态保持一致,即数据入库时参数为开启状态,则导出数据文件时参数也要保证开启,反之,数据入库时参数为关闭状态,导出数据文件时参数也要保证为关闭状态。

posted on 2024-09-18 10:05  GBase数据库  阅读(39)  评论(0编辑  收藏  举报