create procedure lib_timestamp_to_week_of_year (
dattim timestamp)
returns (
weeknr smallint,
ofyear smallint)
as
begin
if (dattim is null)
then
begin
weeknr = null;
ofyear = null;
end
else
begin
/*
week number and corresponding year relate to
thursday of the concerning week (Mon ... Sun)
*/
dattim = dattim
- extract( weekday from (dattim - 1))
/* orig: Sun = 0 ... Sat = 6
to: Mon = 0 ... Sun = 6 */
/* => Mon of week */
+ 3
/* => Thu of week */;
weeknr = (extract( yearday from dattim) / 7) + 1;
ofyear = extract( year from dattim);
end
suspend;
end