dtcvasc() 函数将符合 ANSI SQL 标准的 DATETIME 值的字符串转换为
datetime 值。
要获取关于 ANSI SQL DATETIME 标准的信息,请参阅 DATETIME 和
INTERVAL 值的 ANSI SQL 标准。
语法
mint dtcvasc(inbuf, dtvalue)
char *inbuf;
dtime_t *dtvalue;
inbuf
指向包含 ANSI 标准 DATETIME 字符串的缓冲区的指针。
dtvalue
指向初始化的 datetime 变量的指针。
用法
您必须以您想要此变量拥有的限定符,来初始化 dtvalue 中的 datetime 变量。
inbuf 中的字符串必须有符合 year to second 限定符的值,该限定符的格式为 ANSI
SQL。
inbuf 字符串可有开头的和结尾的空格。
然而,
从第一个有效位至最后一个,
inbuf 仅
可包含符合 ANSI SQL 标准的 DATETIME 值的数字和定界符的字符。
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 676 -
如果您指定年份值作为一个或两个数字,
则 dtcvasc() 函数假定该年份在当前世纪中。
您可设置该 DBCENTURY 环境变量来确定,当您省略来自该日期的世纪时,dtcvasc() 使
用哪个世纪。
如果该字符串为空字符串,则 dtcvasc() 函数将 dtvalue 指向的值设置为空。如果该
字符串是可接受的,则函数设置 datetime 变量中的值,并返回零。否则,函数保持该变量
不变,并返回负的错误代码。
返回代码
0
转换成功。
-1260
不可能在指定的类型之间转换。
-1261
在 datetime 或 interval 的第一个字段中数字太多。
-1262
在 datetime 或 interval 中的非数值字符。
-1263
在 datetime 或 interval 值中的字段超出范围或不正确。
-1264
在 datetime 或 interval 的末尾存在额外的字符。
-1265
在 datetime 或 interval 运算上发生溢出。
-1266
datetime 或 interval 值与该运算不兼容。
-1267
datetime 计算的结果超出范围。
-1268
参数包含无效的 datetime 限定符。
示例
demo 目录在 dtcvasc.ec 文件中包含此样例程序。
/*
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 677 -
* dtcvasc.ec *
The following program converts ASCII datetime strings in ANSI SQL format into datetime
(dtime_t) structure.
*/
#include
EXEC SQL include datetime;
main()
{
mint x;
EXEC SQL BEGIN DECLARE SECTION;
datetime year to second dt1;
EXEC SQL END DECLARE SECTION;
printf("DTCVASC Sample ESQL Program running.\n\n");
printf("Datetime string #1 = 2007-02-11 3:10:35\n");
if (x = dtcvasc("2007-02-11 3:10:35", &dt1))
printf("Result = failed with conversion error: %d\n", x);
else
printf("Result = successful conversion\n");
/*
* Note that the following literal string has a 26 in the hours place
*/
printf("\nDatetime string #2 = 2007-02-04 26:10:35\n");
if (x = dtcvasc("2007-02-04 26:10:35", &dt1))
printf("Result = failed with conversion error: %d\n", x);
else
printf("Result = successful conversion\n");
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 678 -
printf("\nDTCVASC Sample Program over.\n\n");
}
输出
DTCVASC Sample ESQL Program running.
Datetime string #1 = 2007-02-11 3:10:35
Result = successful conversion
Datetime string #2 = 2007-02-04 26:10:35
Result = failed with conversion error:-1263
DTCVASC Sample Program over.