返回首页

gbase数据、南大通用产品文档:GBase8s数据转换函数

更新日期:2024年09月11日

可以在使用表达式的任何地方使用数据转换函数。
下列转换函数在日期与字符串之间转换:

DATE 函数
DATE 函数将字符串转换为 DATE 值。
在以下查询中,
DATE 函数将字符串转换为 DATE
值,
以允许与 DATETIME 值进行比较。
仅当 call_dtime值比指定的 DATE 晚时查询才会检
索 DATETIME 值。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 92 -

图: 查询
SELECT customer_num, call_dtime, res_dtime
FROM cust_calls
WHERE call_dtime > DATE ('12/31/97');
图: 查询结果
customer_num call_dtime res_dtime

106 1998-06-12 08:20 1998-06-12 08:25
110 1998-07-07 10:24 1998-07-07 10:30
119 1998-07-01 15:00 1998-07-02 08:21
121 1998-07-10 14:05 1998-07-10 14:06
127 1998-07-31 14:30
仅当 call_dtime 大于或等于指定日期时,
下列查询才会将 DATETIME 值转换为 DATE 格
式并带标签显示这些值。
图: 查询
SELECT customer_num,
DATE (call_dtime) called,
DATE (res_dtime) resolved
FROM cust_calls
WHERE call_dtime >= DATE ('1/1/98');
图: 查询结果
customer_num called resolved

106 06/12/1998 06/12/1998
110 07/07/1998 07/07/1998
119 07/01/1998 07/02/1998
121 07/10/1998 07/10/1998
127 07/31/1998

TO_CHAR 函数
TO_CHAR 函数将 DATETIME 或 DATE 值转换为字符串值。
TO_CHAR 函数根据您指定
的日期格式化伪指令对 DATETIME 值进行求值并返回 NVARCHAR 值。
有关受支持的日
期格式化伪指令的列表,请参阅《GBase 8s GLS 用户指南》 GL_DATETIME 环境变量的
描述。
还可以使用 TO_CHAR 函数将 DATETIME 或 DATE 值转换为 LVARCHAR 值。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 93 -

下列查询使用 TO_CHAR 函数将 DATETIME 值转换为可读性更强的字符串。
图: 查询
SELECT customer_num,
TO_CHAR(call_dtime, "%A %B %d %Y") call_date
FROM cust_calls
WHERE call_code = "B";
图: 查询结果
customer_num 119
call_date Friday July 01 1998
下列查询使用 TO_CHAR 函数将 DATE 值转换为可读性更强的字符串。
图: 查询
SELECT order_num,
TO_CHAR(ship_date,"%A %B %d %Y") date_shipped
FROM orders
WHERE paid_date IS NULL;
图: 查询结果
order_num 1004
date_shipped Monday May 30 1998

order_num 1006
date_shipped

order_num 1007
date_shipped Sunday June 05 1998

order_num 1012
date_shipped Wednesday June 29 1998

order_num 1016
date_shipped Tuesday July 12 1998

order_num 1017
date_shipped Wednesday July 13 1998
TO_CHAR 函数还可以格式化数字值。
有关内置 TO_CHAR 函数的更多信息,
请参阅
《GBase
8s SQL 指南:语法》。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 94 -


TO_DATE 函数
TO_DATE 函数接受字符数据类型的参数并将此值转换为 DATETIME 值。
TO_DATE 函数
根据您指定的日期格式化伪指令对字符串求值并返回 DATETIME 值。有关受支持的日期
格式化伪指令的列表,请参阅《GBase 8s GLS 用户指南》中 GL_DATETIME 环境变量的
描述。
还可以使用 TO_DATE 函数将 LVARCHAR 值转换为 DATETIME 值。
下列查询使用 TO_DATE 函数将字符串转换为指定格式的 DATETIME 值。
图: 查询
SELECT customer_num, call_descr
FROM cust_calls
WHERE call_dtime = TO_DATE("2008-07-07 10:24",
"%Y-%m-%d %H:%M");

图: 查询结果
customer_num 110

call_descr Order placed one month ago (6/7) not received.
可以使用 DATE 或 TO_DATE 函数来将字符串转换为 DATE 值。
TO_DATE 函数的一个优
点是它允许您为返回的值指定格式。(可以使用 TO_DATE函数(它总是返回 DATETIME
值)来将字符串转换为 DATE 值,原因是数据库服务器隐式处理 DATE 和 DATETIME
值之间的转换。)

即使您的数据库都不使用事务日志记录,您也必须管理逻辑日志文件。请参阅逻辑日志以
获取有关逻辑日志的背景信息。
在 UNIX™ 上,
您必须以 gbasedbt 或 root用户身份登录才能进行本章中所述的任何更改。


GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 297 -
在设置逻辑日志时要执行以下任务:

在您初始化或重新启动数据库服务器之前,请使用 LOGFILES 参数来指定要创建
的逻辑日志文件的数量。

在数据库服务器联机后,请估计系统需要的逻辑日志文件的大小和数量。
请参阅估计日志文件的大小和数量。

如果您不想要使用缺省值,请更改 LOGSIZE 和 LOGBUFF 配置参数。
请参阅更改日志记录配置参数。

添加估计数目的逻辑日志文件。
请参阅分配日志文件。
您要例行执行以下任务:
 备份逻辑日志文件
 切换到下一个逻辑日志文件
 释放逻辑日志文件
 监视日志记录活动和日志备份状态
如有需要,您要例行执行以下任务:
 添加逻辑日志文件
 删除逻辑日志文件
 更改逻辑日志文件的大小
 移动逻辑日志文件
 更改逻辑日志配置参数
 为逻辑日志监视事件警报
 为事务设置高水位标志
有关使用 SQL 管理 API 命令(而不是一些 oncheck、onmode、onparams 和 onspaces 命
令)的信息,请参阅使用 SQL 管理 API 执行远程管理和《GBase 8s 管理员参考》。

(1) 支持在存储过程中使用游标变量
可以在存储过程中使用游标变量并返回游标变量。本版 GBase 8s 支持在存
储过程中使用游标变量,在 SPL 中使用 LET 、RETURN 语句返回游标变量。
用法:
定义游标变量要创建游标变量,请声明 SYS_RECURSOR 类型的变量。
SYS_RECURSOR 类型是内置数据类型,
可以在 DEFINE、
CREATE PROCEDUREC、
CREATE FUNCTION 中定义此游标类型。
例如:声明游标变量 percursor

What’s new in GBase 8s V8.8


南大通用数据技术股份有限公司
56/60


CREATE PRCEDURE test
DEFINE empcount int;
DEFINE percursor SYS_REFCURSOR
……
END PROCEDURE
打开游标变量
声明游标变量后,
可以使⽤ OPEN FOR 语句打开它。
该语句会给此游标变量
绑 定⼀个 SQL 查询语句。
例如,基于以上⽰例打开游标变量 percursor,并绑定⼀个查询语句。
OPEN percursor FOR ‘SELECT COUNT(*) FROM EMP’
有关 OPEN FOR 语句的详细信息,请参阅OPEN FOR 语句。
使⽤游标变量访存数据
打开游标变量后,可以使⽤ FETCH 语句获取查询的结果集。
例如,基于以上⽰例,使⽤ FETCH 语句获取上述查询的结果集,并将
precursor 的值赋值给 empcount:
FETCH percursor INTO empcount;
有关 FETCH 语句的详细信息,请参阅FETCH 语句。
给游标变量赋值
可以将⼀个游标变量的值赋予给另⼀个游标变量。
关闭游标变量
使⽤ CLOSE 语句关闭游标变量。
如果未显式关闭此游标变量,
则该游标变量 OPEN FOR 的 SELECT 查询语句
所 指向的表不能被删除。
例如,基于以上⽰例关闭游标变量 precursor:

What’s new in GBase 8s V8.8


南大通用数据技术股份有限公司
57/60


CLOSE
percursor;
有关 CLOSE 语句的详细信息,请参阅CLOSE 语句。