2010-12-12 8 views
1

문제를 해결하려면 다음을 수행하십시오. 두 가지 의미가 있습니다. 시간 : 12:20과 23:55. 콘센트에있는 값을 추가하는 방법은 36:15입니다.시간 firebird 작업

또는 이러한 값을 dB (시간) 시간으로 유지하는 방법 이외의 추가가 가능 했습니까?

+1

내가 올바르게 두 번 추가 할 것을 이해하십니까과 결과가 다른 * 유효 * 시간이 있어야한다 정수 (초)로 변환이? –

답변

2

파이어 버드의 데이터 유형 TIME은 00:00:00에서 24:00:00 사이의 범위 만 허용합니다.

임의의 시간 (초)을 저장하려면 INTEGER 또는 NUMERIC 데이터 유형을 사용하십시오. 그런 다음 필요에 따라 시간 문자열 형식으로 변환하십시오.

+0

나에게 매우 합리적이라고 생각합니다. TIME [_OF_DAY] 유형은 DURATION 유형과 다릅니다. – Shark8

1

당신은 당신이 2 회를 ​​추가 할 수 있습니다이와 TIMESTAMP in dialect 3

를 사용할 수 있습니다.

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 
;