GBase8s ESQL/C 的datetime和interval使用的宏
在decimal.h中还定义了一些与datetime和interval相关的宏。
修饰符是一个2-字节的整数, 第一个字节高四位为起始字段,第一个字节的低四位时终止字段。
第二个字节为长度。
宏的名称 | 描述 |
TU_YEAR | 时间单位中的年修饰符 |
TU_MONTH | 时间单位中的月修饰符 |
TU_DAY | 时间单位中的日修饰符 |
TU_HOUR | 时间单位中的时修饰符 |
TU_MINUTE | 时间单位中的分修饰符 |
TU_SECOND | 时间单位中的秒修饰符 |
TU_FRAC | 时间单位中的微秒修饰符 |
TU_Fn | datetime的最后一个成员FRACTION(n), n的取值范围为1-5. |
TU_START(p) | 从修饰符中取得起始字段的值。 |
TU_END(p) | 从修饰符中取得终止字段的值。 |
TU_LEN(p) | 返回修饰符的长度。 |
TU_FLEN(f) | 返回interval结构的起始字段的长度。 |
TU_ENCODE(p, f, t) | 创建修饰符,根据起始字段f,长度字段p和终止字段t |
TU_DTENCODE(f,t) | 创建datetime修饰符,根据起始字段f和终止字段t, 内部调用TU_ENCODE(p, f, t)实现。 |
TU_IENCODE(p, f, t) | 创建interval修饰符,根据起始字段f,长度字段p和终止字段t,内部调用TU_ENCODE(p, f, t)实现。 |
如果在程序中,声明interval变量时, 没有指定修饰符。需要调用interval的宏来设定interval的修饰符,请看下面的例子:
/* declare a host variable without a qualifier */
EXEC SQL BEGIN DECLARE SECTION;
interval inv1;
EXEC SQL END DECLARE SECTION;
/* set the interval qualifer for the host variable */
inv1.in_qual = TU_IENCODE(2, TU_DAY, TU_SECOND);
/* assign values to the host variable */
incvasc(“5 2:10:02”, &inv1);