返回首页

gbase数据、南大通用产品文档:GBase8sdtsub() 函数

更新日期:2024年09月11日

dtsub() 函数从另一 datetime 值减去一个 datetime 值。结果为 interval 值。
语法
mint dtsub(d1, d2, inv)
dtime_t *d1, *d2;
intrvl_t *inv;
d1
指向初始化了的 datetime 主变量的指针。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 685 -

d2
指向初始化了的 datetime 主变量的指针。
inv
指向包含结果的 interval 主变量的指针。

用法
dtsub() 函数从 d1 减去 datetime 值 d2,并将 interval 结果存储在 inv 中。该结果
可为正值或负值。如果必要,在减法之前,该函数扩展 d2 来匹配 d1 的限定符。

以 year to month 或 day to fraction(5) 类中的一个值来初始化 inv 的限定符。当 d1
包含 day to fraction 类中的字段时,interval 限定符还必须在 day to fraction 类中。

返回代码
0
减法成功。
<0
在执行减法时,发生错误。

示例

demo 目录在文件 dtsub.ec 中包含此样例程序。该程序执行 datetime 减法,返回在
year to month 与 month to month 的范围中的等同的 interval 结果,并尝试返回在 day
to hour 的范围中的 interval 结果。
/*
* dtsub.ec *

The following program subtracts one DATETIME value from another and displays the
resulting INTERVAL value or an error message.
*/

#include

EXEC SQL include datetime;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 686 -


main()
{
mint x;
char out_str[16];

EXEC SQL BEGIN DECLARE SECTION;
datetime year to month dt_var1, dt_var2;
interval year to month i_ytm;
interval month to month i_mtm;
interval day to hour i_dth;
EXEC SQL END DECLARE SECTION;


printf("DTSUB Sample ESQL Program running.\n\n");

printf("Datetime (year to month) value #1 = 2007-10\n");
dtcvasc("2007-10", &dt_var1);
printf("Datetime (year to month) value #2 = 2001-08\n");
dtcvasc("2001-08", &dt_var2);

printf("------------------------------------\n");

/* Determine year-to-month difference */
printf("Difference (year to month) = ");
if(x = dtsub(&dt_var1, &dt_var2, &i_ytm))
printf("Error from dtsub(): %d\n", x);
else
{
/* Convert to ASCII for displaying */
intoasc(&i_ytm, out_str);
printf("%s\n", out_str);
}

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 687 -


/* Determine month-to-month difference */
printf("Difference (month to month) = ");
if(x = dtsub(&dt_var1, &dt_var2, &i_mtm))
printf("Error from dtsub(): %d\n", x);
else
{
/* Convert to ASCII for displaying */
intoasc(&i_mtm, out_str);
printf("%s\n", out_str);
}

/* Determine day-to-hour difference: Error - Can't convert year-to-month to
day-to-hour
*/
printf("Difference (day to hour) = ");
if(x = dtsub(&dt_var1, &dt_var2, &i_dth))
printf("Error from dtsub(): %d\n", x);
else
{
/* Convert to ASCII for displaying */
intoasc(&i_dth, out_str);
printf("%s\n", out_str);
}

printf("\nDTSUB Sample Program over.\n\n");
}

输出
DTSUB Sample ESQL Program running.

Datetime (year to month) value #1 = 2007-10
Datetime (year to month) value #2 = 2001-08

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 688 -

-------------------------------------------
Difference (year to month) = 0006-02
Difference (month to month) = 86
Difference (day to hour) = Error from dtsub(): -1266

DTSUB Sample Program over.

视图重命名
在对象资源管理器中右键单击要重命名的视图。
在快捷菜单上,
单击“重
命名”。 如下图所示:

图 4-29
在重命名窗口中重新输入名称,点击“确定”即可。

成功创建用户后,接下来需要创建所需要的目录。
示例:使用root 用户,创建目录,并修改目录的权限。
su – root
密码:
# mkdir -p /home/oracli/network/admin
# chown -R oracli:oralci /home/oracli
# chmod -R 755 /home/oracli