连接整数并转换为时间格式

时间:2011-03-02 16:50:17

标签: sql sqlanywhere

我正在使用SQL Anywhere,我正在编写一个函数,并且在将int(小时和分钟)转换为时间方面存在一些问题。你能救我吗?

ALTER FUNCTION "DBA"."VisitTime"
RETURNS TIME
DETERMINISTIC
BEGIN
     DECLARE "timeV" time
     DECLARE hourV integer;
     DECLARE minuteV integer;
     DECLARE minutesV integer;
     SELECT HOUR(CURRENT TIME) as hourV;
     SELECT MINUTE(CURRENT TIME) as minuteV;
     IF minuteV BETWEEN 0 and 29
     THEN SET minutesV = 30;
     END IF;
     IF minuteV between 30 and 59
     THEN SET minutesV = 00;
          SET hourV = hourV + 1;
          IF hourV >= 24 THEN SET hourV = 0;
          END IF;
     END IF;

     SET timeV = CAST(hourV || ':' || minutesV as time);
RETURN "timeV";
END;

我做错了什么?当我尝试执行此操作时,我遇到了错误(“在VisitTime中不允许结果集”)

1 个答案:

答案 0 :(得分:0)

我不是一个sqlanywhere的人,但确定性意味着给定相同的数据和相同的输入/查询,您将获得相同的输出。换句话说(SQL Server文档)

  

确定性函数总是在它们出现时返回相同的结果   使用一组特定的输入值调用并给出相同的状态   数据库。非确定性函数每次都可能返回不同的结果   即使数据库,也会使用一组特定的输入值调用它们   他们访问的状态保持不变。

在你的情况下你的函数,你引用CURRENT TIME,使函数NON-deterministic,因为仅仅通过时间会使结果不同。