为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。 【DM版本】:dm8 【操作系统】: 【CPU】: 【问题描述】*: 建表精度为3,查询ALL_TAB_COLS精度为4099,4099是啥意思
ALL_TAB_COLS 视图中 SCALE 字段的来源是 SYSCOLUMNS 表中SCALE 字段,查达梦文档,能找到 SYSCOLUMNS 表中各字段的定义说明。
文档中有说明: “。。。对于时间数据类型,SCALE 字段值为秒精度,其中针对本地时区类型,SCALE 字段两个字节中的高字节表示 LOCAL 掩码,低字节表示秒精度。。。”
由此可见,4099 这个值的低字节内容是秒精度 4099 = 0x1003 低字节是3,也就是说,秒精度为3
我这里简单测试了一下,也是符合这个说明,测试过程如下:
--测试表 create table t_tm ( a int, t TIMESTAMP WITH LOCAL TIME ZONE, --4102 0x1006 t1 TIMESTAMP(0) WITH LOCAL TIME ZONE, --4096 0x1000 t2 TIMESTAMP(3) WITH LOCAL TIME ZONE, --4099 0x1003 t3 TIMESTAMP(6) WITH LOCAL TIME ZONE, --4102 0x1006 t4 TIMESTAMP(9) WITH LOCAL TIME ZONE --4105 0x1009 ) --查询表定义信息 SELECT TAB.NAME AS TABLE_NAME ,COL.NAME AS COLUMN_NAME ,COL.COLID ,COL.TYPE$ ,COL.LENGTH$ ,COL.SCALE ,BITAND(COL.SCALE >> 8,0xFF) AS LOCAL_MASK ,BITAND(COL.SCALE,0xFF) AS SEC_PRECISION FROM SYSOBJECTS TAB ,SYSCOLUMNS COL WHERE TAB.NAME = 'T_TM' AND COL.ID = TAB.ID ORDER BY COLID
测试结果为:
ALL_TAB_COLS 视图中 SCALE 字段的来源是 SYSCOLUMNS 表中SCALE 字段,查达梦文档,能找到 SYSCOLUMNS 表中各字段的定义说明。
文档中有说明: “。。。对于时间数据类型,SCALE 字段值为秒精度,其中针对本地时区类型,SCALE 字段两个字节中的高字节表示 LOCAL 掩码,低字节表示秒精度。。。”
由此可见,4099 这个值的低字节内容是秒精度
4099 = 0x1003
低字节是3,也就是说,秒精度为3
我这里简单测试了一下,也是符合这个说明,测试过程如下:
--测试表 create table t_tm ( a int, t TIMESTAMP WITH LOCAL TIME ZONE, --4102 0x1006 t1 TIMESTAMP(0) WITH LOCAL TIME ZONE, --4096 0x1000 t2 TIMESTAMP(3) WITH LOCAL TIME ZONE, --4099 0x1003 t3 TIMESTAMP(6) WITH LOCAL TIME ZONE, --4102 0x1006 t4 TIMESTAMP(9) WITH LOCAL TIME ZONE --4105 0x1009 ) --查询表定义信息 SELECT TAB.NAME AS TABLE_NAME ,COL.NAME AS COLUMN_NAME ,COL.COLID ,COL.TYPE$ ,COL.LENGTH$ ,COL.SCALE ,BITAND(COL.SCALE >> 8,0xFF) AS LOCAL_MASK ,BITAND(COL.SCALE,0xFF) AS SEC_PRECISION FROM SYSOBJECTS TAB ,SYSCOLUMNS COL WHERE TAB.NAME = 'T_TM' AND COL.ID = TAB.ID ORDER BY COLID
测试结果为:
