返回首页

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
转换失败。请检查错误消息的文本。

|
+-------------------------------+
1 row in set
gbase> SELECT TO_CHAR(2008032001,'c9.99EEEE') FROM dual;
+---------------------------------+
| TO_CHAR(2008032001,'c9.99EEEE') |
+---------------------------------+
|
$2.01E+09
|
+---------------------------------+
1 row in set
示例9:FORMAT 的值为“FM90.9”,删除“10.3”开头和结尾处的空格。
gbase> SELECT TO_CHAR(10.3,'FM90.9') FROM dual;
+-------------------------+
| TO_CHAR(-10.3,'FM90.9') |
+-------------------------+
| 10.3
|
+-------------------------+
1 row in set
gbase> SELECT TO_CHAR(10.3,'90.9') FROM dual;
+----------------------+
| TO_CHAR(10.3,'90.9') |
+----------------------+
|

LLVM 使用建议
目前LLVM 在数据库内核侧已默认打开,用户可结合上述的分析进行配置,总体建议
如下:
(1)
设置合理的work_mem,在允许的条件下尽可能设置较大的work_mem,如果出现大量
数据落盘,则建议关闭LLVM 动态编译优化(通过设置enable_codegen=off 实现)。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
532
(2)
设置合理的codegen_cost_threshold(默认值为10000),确保小数据量场景下避免使用
LLVM 动态编译优化。当codegen_cost_threshold 的值设定后,因使用LLVM 动态编译
优化引入性能劣化,则建议增加codegen_cost_threshold 的取值。
(3)
对于表达式计算使用LLVM 动态编译优化,如果存在大量的调用C-函数的场景,建议
关闭LLVM 动态编译优化。
在资源许可的情况下,数据量越大,可获得的性能提升效果越好。