返回首页

gbase数据、南大通用产品文档:GBase8sifx_dttofmtasc() 函数

更新日期:2024年09月11日

ifx_dttofmtasc() 函数使用格式化掩码来将 datetime 变量转换为字符串。
语法
mint dttofmtasc(dtvalue, output, str_len, fmtstring, dbcentury)
dtime_t *dtvalue;
char *outbuf;
mint buflen;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 709 -

char *fmtstring;
d
指向要转换的初始化了的 datetime 变量的指针。
output
指向为 d 中的值接收该字符串的缓冲区的指针。
str_len
输出缓冲区的长度。
fmtstring
指向包含要用于输出字符串的格式化掩码的缓冲区的指针。此时间格式化掩码包含
DBTIME 环境变量支持的同一格式化伪指令。
dbcentury
可为下列字符之一,其确定适用于该日期的年份部分的那个世纪:
R
当前的。该函数使用当期年份的两个高数位来扩展该年份值。
P
过去的。该函数使用过去的和但前的世纪来扩展该年份值。它将这两个日期与当前日
期相对比,并使用在当期世纪之前的世纪。如果两个日期都在当前日期之前,则该函数使
用距离当期日期最近的世纪。
F
将来的。该函数使用当前的和下一世纪来扩展该年份值。它将这些世纪与当前日期相
对比,并使用晚于当前日期的世纪。如果两个日期都晚于当前日期,则该函数使用距离当
前日期最近的日期。
C
最近的。该函数使用过去的、当前的和下一世纪来扩展该年份值。它选择距离当前日
期最近的世纪。
用法
您必须以您想要该字符串拥有的限定符来初始化 dtvalue 中的 datetime 变量。如果
您未初始化 datetime 变量,则该函数返回不可预料的值。outbuf 中的字符串不包括 SQL
语句用来定界 DATETIME 文字的限定符或圆括号。

格式化掩码 fmtstring 不需要说明相同的限定符作为 datetime 变量。
当说明了的格式
化掩码不同于 datetime 限定符时,dttofmtasc() 扩展 datetime 值(如同它已调用了
dttofmtasc() 函数那样)。


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 710 -

如果该格式化掩码为空字符串,则该函数将字符串 outbuf 设置为空字符串。如果
fmtstring 为空指针,则 dttofmtasc() 函数必须为 outbuf 中的字符串确定要使用的格式。当
您使用缺省的语言环境时,该函数采用下列优先顺序:
DBTIME 环境变量指定的格式(如果设置 DBTIME 的话)。
GL_DATETIME 环境变量指定的格式(如果设置 GL_DATETIME 的话)。
符合标准 ANSI SQL 格式的缺省的日期格式:
%iY-%m-%d %H:%M:%S

当您在格式化掩码中使用两位年份
(%y)
时,
dttofmtasc() 函数使用 DBCENTURY 环
境变量的值来确定要使用的世纪。如果您未设置 DBCENTURY,则 dttofmtasc() 为两位年
份假定当前的世纪。

当您使用非缺省的语言环境(US English 之外的一种),且未设置 DBTIME 或
GL_DATETIME 环境变量时,
dttofmtasc() 使用客户机语言环境定义的缺省的 DATETIME
格式。


返回代码
0
转换成功。
<0
转换失败。请检查错误消息的文本。

checkpoint_segments
参数说明:设置checkpoint_timeout 周期内所保留的最少WAL 日志段文件数量。每个
日志文件大小为16MB。
该参数属于SIGHUP 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:整型,最小值1
提升此参数可加快大数据的导入速度,但需要结合checkpoint_timeout、shared_buffers
这两个参数统一考虑。这个参数同时影响WAL 日志段文件复用数量,通常情况下pg_xlog
文件夹下最大的复用文件个数为2 倍的checkpoint_segments 个,复用的文件被改名为后续
即将使用的WAL 日志段文件,不会被真正删除。
默认值:64

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1204

校验账本数据一致性
前提条件
数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时
段内有账本操作记录结果产生。
背景信息

账本数据库校验功能目前提供两种校验接口,分别为:ledger_hist_check(text,...和
ledger_gchain_check(text...。普通用户调用校验接口,仅能校验自己有权限访问的表。

校验防篡改用户表和用户历史表的接口为pg_catalog.ledger_hist_check,操作
为:
SELECT pg_catalog.ledger_hist_check(schema_name text,table_name text);
如果校验通过,函数返回t,反之则返回f。

校验防篡改用户表、用户历史表和全局区块表三者是否一致的接口为
pg_catalog.ledger_gchain_check,操作为:
SELECT pg_catalog.ledger_gchain_check(schema_name text, table_name text);
如果校验通过,函数返回t,反之则返回f。
操作步骤
步骤1 校验防篡改用户表ledgernsp.usertable 与其对应的历史表是否一致。
postgres=# SELECT pg_catalog.ledger_hist_check('ledgernsp', 'usertable');
查询结果如下:
ledger_hist_check
-------------------
t
(1 row)
该结果表明:防篡改用户表和用户历史表中记录的结果能够一一对应,保持一致。
步骤2 查询防篡改用户表ledgernsp.usertable 与其对应的历史表以及全局区块表中关于该表
的记录是否一致。
postgres=# SELECT pg_catalog.ledger_gchain_check('ledgernsp', 'usertable');
查询结果如下:

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
212
ledger_gchain_check
---------------------
t
(1 row)
查询结果显示,上述三表中关于ledgernsp.usertable 的记录保持一致,未发生篡改行为。
----结束