dtsubinv() 函数从 datetime 之中减去 interval 值。结果为 datetime 值。
语法
mint dtsubinv(dt, inv, res)
dtime_t *dt;
intrvl_t *inv;
dtime_t *res;
dt
指向初始化了的 datetime 主变量的指针。
inv
指向初始化了的 interval 主变量的指针。
res
指向包含结果的 datetime 主变量的指针。
用法
dtsubinv() 函数从 dt 中的 datetime 中减去 inv 中的 interval 值,并存储 res 中的
datetime 值。此结果继承 dt 的限定符。
datetime 值必须包括出现在 interval 值中的所有字段。当您为初始化 inv 中的变量
dt 时,该函数可能返回不可预料的结果。
返回代码
0
减法成功。
<0
在执行减法时,发生错误。
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 689 -
示例
demo 目录在文件 dtsubinv.ec 中包含此样例程序。
/*
* dtsubinv.ec *
The following program subtracts an INTERVAL value from a DATETIME value and
displays the result.
*/
#include
EXEC SQL include datetime;
main()
{
char out_str[16];
EXEC SQL BEGIN DECLARE SECTION;
datetime year to minute dt_var, result;
interval day to minute intvl;
EXEC SQL END DECLARE SECTION;
printf("DTSUBINV Sample ESQL Program running.\n\n");
printf("Datetime (year to month) value = 2007-11-28\n");
dtcvasc("2007-11-28 11:40", &dt_var);
printf("Interval (day to minute) value = 50 10:20\n");
incvasc("50 10:20", &intvl);
printf("--------------------------------------\n");
dtsubinv(&dt_var, &intvl, &result);
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 690 -
/* Convert to ASCII for displaying */
dttoasc(&result, out_str);
printf("Difference (year to hour) = %s\n", out_str);
printf("\nDTSUBINV Sample Program over.\n\n");
}
输出
DTSUBINV Sample ESQL Program running.
Datetime (year to month) value = 2007-11-28
Interval (day to minute) value = 50 10:20
-----------------------------------------------------
Difference (year to hour) = 2007-10-09 01:20
DTSUBINV Sample Program over.