[ORACLE SQL] meest recente werkdag voor vandaag selecteren.

Pagina: 1
Acties:

  • aardbeix15
  • Registratie: Maart 2001
  • Niet online

aardbeix15

100%fruit pers je er niet uit!

Topicstarter
Ik heb al e.a. lopen zoeken maar ik kom maar tot een praktische oplossing. Ik wil in een to_char van de sysdate de laatste werkdag voor vandaag selecteren.

Nu heb ik
code:
1
to_char (sysdate - 1,'DD-MM-YYYY')

op maandag en zondag wil ik dan dat het antwoord vrijdag is.

Ik heb in de applicatie niet echt ruitme om hier een mooi stukje PL/SQL om heen te shcrijven, weet iemand hoe je met de sysdate de meest actuele werkdag voor vandaag kunt selecteren :?

alvast bedankt.

snel zeggen: 'De koetsier poetst de postkoets met postkoetspoets'
levensmotto: 'vroeg gedaan is lang gerelaxed!'.


  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
In veel sql talen zit ondersteuning voor case expressies, hiermee zou je wel het een en ander kunnen opvangen:

Zoiets zou dan de meest recente werkdag moeten selecteren: (niet getest, en zelf ook weinig ervaring met oracle :), dus grote kans dat het niet helemaal werkt)
SQL:
1
2
3
4
5
6
select case to_char(sysdate, 'D') 
         when 7 then to_char (sysdate - 2,'DD-MM-YYYY')
         when 1 then to_char (sysdate - 3,'DD-MM-YYYY')
         else to_char (sysdate - 1,'DD-MM-YYYY') 
       end 
from dual;


(dit is dan wel afhankelijk van de regionale instellingen op de server)

Verwijderd

pjotrk schreef op 05 november 2004 @ 15:52:

Zoiets zou dan de meest recente werkdag moeten selecteren: (niet getest, en zelf ook weinig ervaring met oracle :), dus grote kans dat het niet helemaal werkt)
SQL:
1
2
3
4
5
6
select case to_char(sysdate, 'D') 
         when 7 then to_char (sysdate - 2,'DD-MM-YYYY')
         when 1 then to_char (sysdate - 3,'DD-MM-YYYY')
         else to_char (sysdate - 1,'DD-MM-YYYY') 
       end 
from dual;


(dit is dan wel afhankelijk van de regionale instellingen op de server)
Oplossing was goed, alleen krijg je problemen met data types (to_char in vergelijking met een nummer).

Volgens mij moet dit werken:
SQL:
1
2
3
4
5
6
7
select 
  case to_number(to_char(trunc(sysdate), 'D'))
  when 7 then to_char(trunc(sysdate)  - 2,'DD-MM-YYYY')
  when 1 then to_char(trunc(sysdate) - 3,'DD-MM-YYYY')
  else to_char (trunc(sysdate) - 1,'DD-MM-YYYY') 
  end 
from dual;

[ Voor 7% gewijzigd door Verwijderd op 05-11-2004 16:13 ]


  • aardbeix15
  • Registratie: Maart 2001
  • Niet online

aardbeix15

100%fruit pers je er niet uit!

Topicstarter
ziet er goed uit ik heb maandag de kans opnieuw hiermee aan de slag te gaan maar het moest haaast gaan werken, thnx

snel zeggen: 'De koetsier poetst de postkoets met postkoetspoets'
levensmotto: 'vroeg gedaan is lang gerelaxed!'.