返回首页

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

更新日期:2024年09月11日

invdivdbl() 函数将 interval 值除以一个数值的值。

语法
mint invdivdbl(iv, num, ov)
intrvl_t *iv;
double num;
intrvl_t *ov;
iv
指向要被除的 interval 变量的指针。
num
数值的除数值。
ov
指向带有有效的限定符的 interval 变量的指针。

用法
输入和输出限定符必须同时属于同一 interval 类:
或者 year to month 类,
或者 day
to fraction(5) 类。如果 ov 的限定符不同于(同一类之内的)iv 的限定符,则 invdivdbl()
函数扩展该结果(如 invextend() 函数定义的那样)。

invdivdbl() 函数将 iv 中的 interval 值除以 num,并将结果存储在 ov 中。

num 中的值可为正值或负值。

返回代码
0
除法成功。
<0
除法失败。
-1200
数值的值(大小)太大。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 837 -
-1201
数值的值(大小)太小。
-1202
num 参数为零(0)。
-1265
interval 操作发生溢出。
-1266
interval 值与该操作不兼容。
-1268
参数包含无效的 interval 限定符。

示例
demo 目录在文件 invdivdbl.ec 中包含此样例程序。
/*
* indivdbl.ec *

The following program divides an INTERVAL type variable by a numeric value and
stores the result in an INTERVAL variable. The operation is done twice, using INTERVALs with
different qualifiers to store the result.
*/

#include

EXEC SQL include datetime;

main()
{
char out_str[16];

EXEC SQL BEGIN DECLARE SECTION;
interval day to second daytosec1;
interval hour to minute hrtomin;
interval day to second daytosec2;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 838 -
EXEC SQL END DECLARE SECTION;

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

/* Input is 3 days, 5 hours, 27 minutes, and 30 seconds */
printf("Interval (day to second) string = '3 5:27:30'\n");
incvasc("3 5:27:30", &daytosec1);

/* Divide input value by 3.0, store in hour to min interval*/
invdivdbl(&daytosec1, (double) 3.0, &hrtomin);

/* Convert the internal format to ascii for displaying */
intoasc(&hrtomin, out_str);
printf("Divisor (double) = 3.0 \n");
printf("--------------------------------\n");
printf("Quotient #1 (hour to minute)='%s'\n", out_str);

/* Divide input value by 3.0, store in day to sec interval variable */
invdivdbl(&hrtomin, (double) 3.0, &daytosec2);

/* Convert the internal format to ascii for displaying */
intoasc(&daytosec2, out_str);
printf("Quotient #2 (day to second) = '%s'\n", out_str);
printf("\nINVDIVDBL Sample Program over.\n\n");
}
输出
INVDIVDBL Sample ESQL Program running.

Interval (day to second) string = '3 5:27:30'
Divisor (double) = 3.0
---------------------------------------------
Quotient #1 (hour to minute) = ' 25:49'
Quotient #2 (day to second) = ' 1 01:49:10'

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 839 -
INVDIVDBL Sample Program over.

推荐如下软件类型及版本:
表2-3 软件环境要求
软件类型
配置描述
Linux 操作系统

ARM:

CentOS 7.6-7.9

麒麟V10

统信V20

Debian 10.3

Uniontech 20

Redhat

openEuler 20.3LTS

X86

CentOS 7.6-7.9

麒麟V10

统信V20

Debian 10.3

Uniontech 20

openEuler 20.3LTS

GBase 8c V5 安装部署手册(主备式)
南大通用数据技术股份有限公司
5
Linux 文件系统
剩余inode 个数> 15 亿(推荐)
指令集
rdtscp(仅虚拟机环境需要)
建议同集群中各节点服务器的操作系统和版本一致。如需使用跨CPU 类型的服务器,
需注意以下步骤:
(1)
把X86 和Arm 类型的安装包,各放到相应类型服务器的同一目录。
(2)
只解压与部署服务器CPU 架构相同的安装包,解压后,继续解压其下OM 安装包。
(3)
进入Script 子目录,继续按照正常安装流程执行,包括软件依赖检查、安装准备、安装
部署等步骤。

函数说明
返回date (1 = 周日, 2 = 周一, ..., 7 = 周六)对应的工作日索引。
示例
示例1
“2010-08-30”是周一,返回对应的工作日索引为2。
gbase> SELECT DAYOFWEEK('2010-08-30') FROM t;
+-------------------------+
| DAYOFWEEK('2010-08-30') |
+-------------------------+
| 2 |
+-------------------------+
1 row in set