更新日期:2024年09月11日
ifx_defmtdate() 函数使用格式化掩码来将字符串转换为内部的 DATE 格式。
语法
mint ifx_defmtdate(jdate, fmtstring, instring, dbcentury)
int4 *jdate;
char *fmtstring;
char *instring;
char dbcentury;
jdate
指向 int4 整数值的指针,该值接收 inbuf 字符串的内部 DATE 值。
fmtstring
指向包含要用于 inbuf 字符串的格式化掩码的缓冲区的指针。
instring
指向包含要转换的日期字符串的缓冲区的指针。
dbcentury
可为下列字符之一,其确定适用于该日期的年份部分的世纪:
R
当前的。该函数使用当前年份的两个高数位来扩展该年份值。
P
过去的。该函数使用当前的和过去的世纪来扩展该年份值。它将这两个日期与当前日
期对比,并使用在当前世纪之前的那个世纪。如果两个日期都在当前日期之前,则该函数
使用距离当前日期最近的世纪。
F
未来的。该函数使用当前的和下一世纪来扩展该年份值。它将这些世纪与当前日期对
比,并使用晚于当前日期的那个世纪。如果两个日期都晚于当前的日期,则该函数使用距
离当前日期最近的日期。
C
最近的。该函数使用当前的、过去的和下一世纪来扩展该年份值。它选择距离当前日
期最近的那个世纪。
用法
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 703 -
fmtstring 参数指向日期格式化掩码,其包含描述如何说明该日期字符串
的格式。
input 字符串和 fmtstring 必须依照与月份、日子和年份相同的先后顺序。然而,它们
不需要包含月份、日子和年份的相同的文字或相同的表示。
您可在 fmtstring 中包括 weekday 格式(ww),但数据库服务器忽略那种格式。没
有来自 inbuf 的内容与该 weekday 格式相对应。
下列 fmtstring 与 input 的组合是有效的。
格式化掩码输入
mmddyy
Dec. 25th, 2007
mmddyyyy
Dec. 25th, 2007
mmm. dd. yyyy
dec 25 2007
mmm. dd. yyyy
DEC-25-2007
mmm. dd. yyyy
122507
mmm. dd. yyyy
12/25/07
yy/mm/dd
07/12/25
yy/mm/dd
2007, December 25
yy/mm/dd
In the year 2007, the month of December, it is the 25th day
dd-mm-yy
This 25th day of December 2007
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 704 -
如果存储在 inbuf 中的值是四位的年份,
则 ifx_defmtdate() 函数使用那个值。
如果存
储在 inbuf 中的值是二位的年份,则 ifx_defmtdate() 函数使用 dbcentury 参数的值来确定
要使用的那个世纪。
如果您未设置 dbcentury 参数,
则 ifx_defmtdate() 使用 DBCENTURY
环境变量来确定要使用哪个世纪。如果您未设置 DBCENTURY,则 ifx_strdate() 假定两位
年份的当前世纪。
返回代码
如果您使用无效的日期字符串格式,则 ifx_defmtdate() 返回错误代码,并将内部的
DATE 设置为当前日期。下列是可能的返回代码:
0
操作成功。
-1204
*input 参数指定无效的年份。
-1205
*input 参数指定无效的月份。
-1206
*input 参数指定无效的日子。
-1209
由于 *input 未包含在该年份、月份和日子之间的定界符,因此,*input 的长度必须
恰为 6 或 8 字节。
-1212
*fmtstring 未指定年份、月份和日子。