很简单的存储过程,怎么就不对呢~~~各位帮忙呀!

child_bj 2003-03-23 11:28:42

我的存储过程定义如下:
CREATE PROCEDURE "PROC_ARMY_AGE"
(
"CURRDATE" TIMESTAMP
)
RETURNS
(
"AGE" CHAR(10)
)
AS
DECLARE VARIABLE JD TIMESTAMP;
BEGIN
SELECT JOINDATE FROM USERS WHERE ID=5
INTO :JD;
AGE=CURRDATE-JD;
END

是想返回当前时间与字段内的时间的差值。可是报错如下:
Conversion error from string "933.468414351"
Statement: SELECT * FROM PROC_ARMY_AGE(CURRENT_TIMESTAMP)

怀疑是返回值的类型定义不对,可是换了几种都不成~~为什么呀?

还有,如果我想返回当前时间跟记录的时间的YEAR的差值,怎么算?用EXTRACT函数吗?可是好象用这个函数所得到的结果是一个STRING,那IB里有类型转换的函数吗?
...全文
31 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangqiflash 2003-09-05
  • 打赏
  • 举报
回复
我同意上面的建议。
child_bj 2003-03-24
  • 打赏
  • 举报
回复
我UPUPUP!!!!!
child_bj 2003-03-23
  • 打赏
  • 举报
回复
IB里有String这样的数据类型吗?

我用的是IB6的OPEN版。开始是用BCB6。sql dialet 3
erickleung 2003-03-23
  • 打赏
  • 举报
回复
AGE (String) = Currdate (TimeStamp) - JD (TimeStamp)?

把 AGE 设为 Double Precision 试试.

我假设你是用 ib 5.x或以前, 是sql dialet 1, 所以是无日期类型, 因此用Delphi运算较方便

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧