返回首页

gbase数据、南大通用产品文档:GBase8cserver_version

更新日期:2024年09月11日

参数说明:报告服务器版本号(字符串形式)。
该参数属于INTERNAL 类型参数,为固定参数,用户无法修改此参数,只能查看。该
参数继承自PostgreSQL 内核,表示当前数据库内核兼容PostgreSQL 对应的server_version
版本,无实际含义,为保持北向对外工具接口的生态兼容性(工具连接时查询),保留该参
数。该参数不推荐使用,如想查询服务器版本号,可通过函数opengauss_version()获取。
取值范围:字符串
默认值:9.2.4

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.

系统要求
表 5-140 硬件平台:
硬件
最低配置
推荐配置
处理器
1×2 核 2.0GHz
4×4 核 3.0GHz
内存
4GB
64GB 或更多
硬盘
100GB
1TB
光驱
CD-ROM
CD-ROM