与时间火鸟的操作

时间:2010-12-12 13:08:21

标签: firebird

解决此问题。 有两个含义时间:12:20和23:55。如何在出口处添加值为36:15。

或者如何将这些值保持在dB(时间)时间,除非是否可以添加?

3 个答案:

答案 0 :(得分:2)

Firebird的数据类型TIME仅允许在00:00:00到24:00:00之间。

如果要存储任意数量的时间(例如,以秒为单位),请使用INTEGER或NUMERIC数据类型。然后根据需要将其转换为时间字符串格式。

答案 1 :(得分:1)

您可以使用TIMESTAMP in dialect 3

这样你就可以加2次。

答案 2 :(得分:0)

我这里有代码转换整数

CREATE PROCEDURE P_CONVERT_TIME (
  V_TIME_INT INTEGER
)
RETURNS (
  V_TIME_STR VARCHAR(20)
)
AS
  DECLARE VARIABLE v_max_trans_hour integer;
  DECLARE VARIABLE v_max_trans_min integer;
  DECLARE VARIABLE v_max_trans_sec integer;
  DECLARE VARIABLE v_max_trans_sec_gross integer;
BEGIN
    v_max_trans_sec = cast(v_Time_Int as integer);
    v_max_trans_hour = coalesce(div(v_max_trans_sec, 3600), 0);
    if (v_max_trans_hour > 0) then
      v_max_trans_sec = v_max_trans_sec - (3600 * v_max_trans_hour);
    v_max_trans_min = coalesce(div(v_max_trans_sec, 60), 0);
    if (v_max_trans_min > 0) then
      v_max_trans_sec = v_max_trans_sec - (60 * v_max_trans_min);

    if (v_max_trans_hour > 0) then begin
       if (v_max_trans_hour < 10) then begin
        V_Time_Str ='0'||v_max_trans_hour||':'; end else
        V_Time_Str=v_max_trans_hour||':';
    end else  V_Time_Str='00:';

    if (v_max_trans_min > 0) then begin
       if (v_max_trans_min <10) then begin
        V_Time_Str =V_Time_Str ||'0'||v_max_trans_min||':'; end else
        V_Time_Str =V_Time_Str ||v_max_trans_min||':';
    end else V_Time_Str =V_Time_Str ||'00:';

    if (v_max_trans_sec > 0) then begin
       if (v_max_trans_sec <10) then begin
        V_Time_Str =V_Time_Str ||'0'|| v_max_trans_sec; end else
        V_Time_Str =V_Time_Str || v_max_trans_sec;

    end else V_Time_Str =V_Time_Str ||'00';
  suspend;
END
;