SQL Statement today

  • Onderwerp starter Onderwerp starter WVN
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

WVN

Nieuwe gebruiker
Lid geworden
17 okt 2007
Berichten
2
Hallo Allemaal,

ik zit al enige tijd met een probleem waar ik niet uitkom, vandaar dat ik jullie hulp nu vraag.
ik heb in mijn database een tabel staan met daarin data. Deze is gekoppeld aan een tabel met daarin het aantal meldingnummers. Dus per dag worden er een aantal meldingen gemaakt en de data wordt hieraan gekoppeld.

Nu wil ik een Querie maken die het aantal meldingen per dag opvraagt. Ik wil geen harde datum opgeven maar iets van 'Current Date'. Zodat ik elke dag dezelfde querie kan gebruiken. Wanneer ik een waarde als @today datetime opgeef blijft het systeem een foutmelding geven dat er een numerieke waarde wordt verwacht. Is er een manier om dit te omzeilen?

ik hoop dat het duidelijk is anders hoor ik het graag.
 
Is dit in sql Oracle?

Probeer is sysdate. Dit geeft je de datum van vandaag.

Select sysdate as "Actual Date" from dual



Groeten,

Fred
 
sorry voor het late antwoord.
het is inderdaad een sql oracle.
sysdate geprobeerd. Ook de datum van vandaag ingevoerd en dat werkt op zich wel, alleen wil ik niet elke dag de datum invullen.
 
Probeer dit eens

Als je echt van vandaag wilt hebben:
Where DatumVeld > trunc(sysdate)

Van ALLEEN gisteren:
Where datumveld > Trunc(sysdate -1)
and datumveld < trunc(sysdate)
 
Probeer dit eens

Als je echt van vandaag wilt hebben:
Where DatumVeld > trunc(sysdate)

Van ALLEEN gisteren:
Where datumveld > Trunc(sysdate -1)
and datumveld < trunc(sysdate)

Bedoel je niet dit?

Als je echt van vandaag wilt hebben:
Where trunc(DatumVeld) = trunc(sysdate)

Je gebruikt hier "groter dan" terwijl je niet weet of er ook toekomstige data in de database voor kunnen komen. Trouwens, "groter dan" de datum van vandaag begint vanaf morgen...

Van ALLEEN gisteren:
Where trunc(datumveld) = Trunc(sysdate)-1

Waarom 2 regels gebruiken als het ook in één kan? ;-)

Voor de zekerheid heb ik er ook nog "trunc(DatumVeld)" van gemaakt, mocht de tijd ook in de tabel worden weggeschreven.
 
Bedoel je niet dit?

Als je echt van vandaag wilt hebben:
Where trunc(DatumVeld) = trunc(sysdate)

Je gebruikt hier "groter dan" terwijl je niet weet of er ook toekomstige data in de database voor kunnen komen. Trouwens, "groter dan" de datum van vandaag begint vanaf morgen...

Nee dat bedoel ik niet! Als je er vanuit gaat dat er geen datums in de toekomst liggen (en bij data entry kan dat ook bijna niet ;) ) kan dit statement prima. Bovendien is trunc(sysdate) gelijk aan 00:00:00 vandaag (middernacht dus) dit betekent dat 01:00:00, als in 1 uur 's ochtends groter is dan trunc(sysdate)

Van ALLEEN gisteren:
Where trunc(datumveld) = Trunc(sysdate)-1

Waarom 2 regels gebruiken als het ook in één kan? ;-)

Voor de zekerheid heb ik er ook nog "trunc(DatumVeld)" van gemaakt, mocht de tijd ook in de tabel worden weggeschreven.
Ja, je kan ook between gebruiken natuurlijk of wat jij net doet. Echter wilde ik niet de OP onnodig "complexe" dingen voorschotelen en alles in 1 "manier" houden.
Verder is het zo dat het datumveld wellicht geindexeerd is en als je trunc(datumveld) gebruikt werkt die index niet meer, met between of de >= of < methode werkt die index dus juist wel.

Overigens zie ik nu dat er wel een bugje in mijn voorbeelden zit, het moet >= zijn en niet >
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan