数据仓库服务 GAUSSDB(DWS)-GaussDB(DWS)查询时结果不一致的常见场景和解决方法:数据库兼容性行为配置项behavior_compat_options设置不同

时间:2024-06-21 18:00:23

数据库兼容性行为配置项behavior_compat_options设置不同

场景:add_months函数计算结果不一致。

database1:

1
2
3
4
5
SELECT add_months('2018-02-28',3) from dual;
add_months
---------------------
2018-05-28 00:00:00
(1 row)

database2:

1
2
3
4
5
SELECT add_months('2018-02-28',3) from dual;
add_months
---------------------
2018-05-31 00:00:00
(1 row)

原因分析

数据库兼容性配置项behavior_compat_options不同会导致部分行为不同,该参数选项可参考behavior_compat_options中的相关选项描述。

此场景中behavior_compat_options配置项中的end_month_calculate参数控制add_months函数计算逻辑配置项。设置end_month_calculate配置项时,如果param1的日期(Day字段)为月末,并且param1的日期(Day字段)比result月份的月末日期比小,计算结果中的日期字段(Day字段)和result的月末日期保持一致。

解决方法

需要将数据库中参数behavior_compat_options的兼容性配置项设置为一致。该参数类型为USERSET类型,可session级别设置或集群级修改。

support.huaweicloud.com/dws_faq/dws_03_2107.html