数据仓库服务 GAUSSDB(DWS)-DWS查询时结果不一致的常见场景和解决方法:数据库兼容性行为配置项behavior_compat_options设置不同
数据库兼容性行为配置项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级别设置或集群级修改。