Avatar billede jacobve Nybegynder
28. april 2001 - 20:23 Der er 2 kommentarer og
1 løsning

første dag i en uge, samt aktuel uge

Jeg er i gang med et skole projekt, hvor vi udvikler en applikation i forms 4.5.

Der til skal jeg bruge/lave en funktion:

den skal på baggrund af en NUMBER, som angiver et uge nr, returnere datoen for den første dag i ugen, dvs. datoen for mandag.

foerste_dato(uge NUMBER) return DATE;

----

derudover skal jeg have fat i nummeret på den uge SYSDATE er i.

Kan man på nogen måde formatter :SYSDATE så den giver et uge nr. eller er der en anden udvej?
Avatar billede holdam Nybegynder
28. april 2001 - 23:50 #1
Ugenummeret kan du få ved:

SELECT TO_CHAR(SYSDATE, \'IW\') FROM sys.dual;

Mandag i en given uge for et bestemt år kan du få af følgende funktion (bemærk at årstallet skal skrives med fire cifre):

FUNCTION monday (week_no PLS_INTEGER, year CHAR) RETURN DATE IS
  jan_1_week        PLS_INTEGER;
  jan_1_day          PLS_INTEGER;
  nof_monday        PLS_INTEGER;
  monday_in_week_no  PLS_INTEGER;
BEGIN
  -- The \"nof_monday\" is only there to make the procedure independent of the nls_territory setting
  SELECT TO_CHAR(TO_DATE(\'0101\'||year, \'DDMMYYYY\'), \'IW\'),
        TO_CHAR(TO_DATE(\'0101\'||year, \'DDMMYYYY\'), \'D\'),
        TO_CHAR(TO_DATE(\'01012001\',  \'DDMMYYYY\'), \'D\')
    INTO jan_1_week, jan_1_day, nof_monday
    FROM sys.dual;
  IF jan_1_week>=52 THEN
    jan_1_week:=0;
  END IF;
  monday_in_week_no:=(week_no-jan_1_week-1)*7+(8-jan_1_day)+1+(nof_monday-1);
  RETURN TO_DATE(LPAD(monday_in_week_no, 3, \'0\') || year, \'DDDYYYY\');
END;

Avatar billede jacobve Nybegynder
29. april 2001 - 10:26 #2
Jeg har ikke tid til at teste her til morgen, da jeg skal gå nu, men jeg kigger på det når jeg kommer hjem.

Umiddelbart ser det ud til at det er lige hvad jeg skal bruge :-)
Avatar billede jacobve Nybegynder
29. april 2001 - 18:38 #3
SUPER... Det var lige hvad jeg manglede :-)

60 point til dig holdam.
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