Avatar billede umfugo Nybegynder
26. maj 2003 - 14:50 Der er 2 kommentarer og
1 løsning

Første dag i ugen.!

Jeg kommer med en variabel (number) der indeholder et yyyyww. Hvorledes finder jeg første dag i den angivet uge(ww)???
Avatar billede holdam Nybegynder
26. maj 2003 - 15:04 #1
Hej umfugo

Se evt. mit svar på spørgsmål http://www.eksperten.dk/spm/68510. Det tror jeg også du kan bruge. Der har sneget sig nogle backslash'er ind i PL/SQL-koden - dem skal du bare fjerne.
Avatar billede umfugo Nybegynder
26. maj 2003 - 15:26 #2
Function virker fint nok, dog ikke hvis week_no = 1
Avatar billede holdam Nybegynder
26. maj 2003 - 16:52 #3
Hej igen

Prøv det her. Den finder så ikke mandagen, men den første dag i ugen. Og det
var sådan set også det den skulle :-) (Modifikationen for skudår er lavet
lidt hurtigt. Undskylder hvis der er fejl).

FUNCTION first_day (week_no PLS_INTEGER, year CHAR) RETURN DATE IS
  jan_1_week          PLS_INTEGER;
  jan_1_day            PLS_INTEGER;
  first_day_in_week_no PLS_INTEGER;
BEGIN
  SELECT TO_CHAR(TO_DATE('0101'||year, 'DDMMYYYY'), 'IW'),
        TO_CHAR(TO_DATE('0101'||year, 'DDMMYYYY'), 'D')
    INTO jan_1_week, jan_1_day
    FROM sys.dual;

  IF jan_1_week>=52 THEN
    jan_1_week:=0;
  END IF;
  first_day_in_week_no:=(week_no-jan_1_week-1)*7+(8-jan_1_day)+1;
  IF first_day_in_week_no>0 THEN
    RETURN TO_DATE(LPAD(first_day_in_week_no, 3, '0') || year, 'DDDYYYY');
  ELSE
    IF MOD(year-1,4)=0 AND (MOD(year-1,100)<>0 OR MOD(year-1,400)=0) THEN
      RETURN TO_DATE(LPAD(first_day_in_week_no+366, 3, '0') || year-1,
'DDDYYYY');
    ELSE
      RETURN TO_DATE(LPAD(first_day_in_week_no+365, 3, '0') || year-1,
'DDDYYYY');
    END IF;
  END IF;
END;
/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester