Re: Week # function?
Posted in 1994
-- This stored procedure takes one argument (a date) and returns
-- a char(5) with the format "YY-WW" where YY is the year and WW is the
-- week # (between 01 and 52). Beware that vika("30.12.93") will result
-- 94-01, because here weeks start on monday.
CREATE PROCEDURE vika (dagur DATE) RETURNING CHAR(5);
DEFINE utar, utvika CHAR(2);
DEFINE i,j,k SMALLINT;
DEFINE d1, d2 DATE;
LET k = YEAR(dagur);
LET d1 = MDY(1,1,k);
LET i = YEAR(dagur) - 1900;
WHILE WEEKDAY(d1) != 1
LET d1 = d1 - 1 UNITS DAY;
END WHILE;
LET j = dagur - d1;
LET k = j / 7 + 1;
IF k > 52 THEN
LET i = i + 1;
LET j = 1;
ELSE
LET j = k;
END IF;
LET utar = i;
LET utvika = j;
IF LENGTH(utvika) = 1 THEN
LET utvika = "0"||utvika;
END IF
RETURN utar||"-"||utvika;
END PROCEDURE;
~