注册
不同版本达梦数据库IFUN_DATETIME_MODE参数值测试
培训园地/ 文章详情 /

不同版本达梦数据库IFUN_DATETIME_MODE参数值测试

派拉蒙 2023/09/25 2176 0 0

前言

在达梦数据库中参数IFUN_DATETIME_MODE含义是:
The definition of DATETIME in sys function, 0:DATATIME(6), 1:DATATIME(9)

近期某项目组发现DM8 1.2.128版本和DM8 1.2.192版本中IFUN_DATETIME_MODE参数默认值不一样,根据要求需要将DM8 1.2.128版本升级至DM8 1.2.192版本,那相关DATETIME字段的数据是否受影响呢?

下面开始测试验证:

Dm8 1.2.128 版本

1.1 IFUN_DATETIME_MODE=1

在Dm8 1.2.128参数IFUN_DATETIME_MODE默认值为1.

1.1.1 服务端创建、查询t01表

创建表t01,如字段DATETIME精度为9,直接创建失败。将字段值精度设置6,创建成功。插入精度为9的数值,插入成功,但是查询只是显示了6个精度值。
图片1.png

1.1.2 客户端查询t01表

查询t01表,和服务端查询结果一致,只是显示6位精度。
图片2.png

1.2 IFUN_DATETIME_MODE=0

修改参数IFUN_DATETIME_MODE值为0,重启库继续测试。

1.2.1服务端创建、查询t02表

创建表t02,定义同t01一致,如字段DATETIME精度为9,直接创建失败。将字段值精度设置6,创建成功。插入精度为9的数值,插入成功,但是查询只是显示了6个精度值。
图片3.png

1.2.2客户端查询t02表

在客户端无法查看t02表数据。
图片4.png

Dm8 1.2.192 版本

2.1 IFUN_DATETIME_MODE=0

在Dm8 1.2.192 版本该参数默认值为0.

2.1.1 服务端创建、查询t01表

服务端创建表create table t01(a1 DATETIME(9));,插入精度9位数值并查询,发现精度只是正确显示到6位,7-9精度的值显示为0。
图片5.png

2.1.2 客户端查询t01表

客户端查询t01表,发现精度也是正确显示到6位,7-9精度的值显示为0:
图片6.png

2.2 IFUN_DATETIME_MODE=1

将参数IFUN_DATETIME_MODE值改为1,并重启数据库继续测试。

2.2.1服务端查询t01表

再次在服务端查询t01表,发现精度也是正确显示到6位,7-9精度的值显示为0:
图片7.png

2.2.2 客户端查询t01表

客户端再次查询表t01,发现精度也是正确显示到6位,7-9精度的值显示为0:
图片8.png

2.2.3 服务端创建、查询t02表

在服务端新创建t02表,定义同t01一致,并且是插入同样的数值。查询t02表,发现精度正确显示到9位。
图片9.png

2.2.4 客户端查询t02表

查询t02表,发现精度正确显示到9位。
图片10.png

总结

根据上面测试结果整理如下表格:
WPS图片1.png

结论

DM8 1.2.128版本

该参数值默认为1,但是也只能创建DATETIME类型字段精度为6的表。只有该值为1时,服务端和客户端都显示一致,显示到精度为6位数。

DM8 1.2.192版本

该参数值默认为0,能创建DATETIME类型字段精度为9的表,服务端和客户端查询都显示到9位精度,但是7-9位精度值为0。将该参数值改为1,服务端和客户端都能查询到9位精度,而且精度7-9也显示正确的数值。

也就是说如果128版本这个参数值为1,192版本无论这参数值是0还是1都兼容128版本之前的数据,应用不会报错。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服