|
| Inavlid date return |
 |
22 Oct 2006 22:22:54 -0700 |
Interbase 7.5.1 windows 2000 Server
I make key codes with system date from Interbase server
< select cast('TODAY' as Date) from rdb$database >
The return value is different from current date
this is happen very rare but 2 customers have report me the same problem.
It is Interbase bug? or Windows bug ?
i Report the 3 stored procedures
------------------------------------------------------
CREATE PROCEDURE GETSYSDATE
RETURNS (
FORDERID INTEGER)
AS
DECLARE VARIABLE FY VARCHAR(4);
DECLARE VARIABLE DT DATE;
DECLARE VARIABLE FDATE DATE;
DECLARE VARIABLE ORDERID VARCHAR(10);
begin
select cast('TODAY' as Date) from rdb$database
into :DT;
select ADATE from LASTDATE into :FDATE;
if (DT <> FDATE or (FDATE is null))
then
Update LASTDATE set ADATE= :DT,LASTORDER =1;
else
Update LASTDATE set LASTORDER =LASTORDER+1;
select DAYS from DAYSBETWEEN into :FY;
select Cast(LASTORDER as VarChar(10))||:FY
from
LASTDATE into ORDERID;
FORDERID=cast(ORDERID as Integer);
suspend;
end
----------------------------------------------------------
CREATE PROCEDURE DAYSBETWEEN
RETURNS (
DAYS CHAR (4) CHARACTER SET NONE)
AS
DECLARE VARIABLE ACurrYear varchar(4);
declare variable FDAY varchar(3);
DECLARE VARIABLE Aday Integer;
DECLARE VARIABLE AYEAR Integer;
DECLARE VARIABLE ADATE DATE;
BEGIN
AYEAR=Extract(Year from Current_Date);
ADATE=01||'/'||01||'/'||(AYEAR);
ACurrYear=cast(AYEAR as Varchar(4));
ACurrYear=LOngsubstr(ACurrYear,strlen(ACurrYear),1);
select Result +1 from getdif(:adate,Current_Date) into :Aday;
Fday=Cast(aday as Varchar(3));
if (strlen(Fday)=1) then Fday='00'||Fday;
else
if (strlen(Fday)=2) then Fday='0'||Fday;
Days=Fday||ACurrYear;
SUSPEND;
END
--------------------------------------------------------------
CREATE PROCEDURE GETDIF (
D1 DATE,
D2 DATE)
RETURNS (
RESULT INTEGER)
AS
BEGIN
Result = (D2-D1);
SUSPEND;
|
| Post Reply
|
|
|
|
|
|
|
|
|
|