SQL query met de datum van gisteren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Raffy
  • Registratie: September 2003
  • Laatst online: 12-03 00:12
Wij draaien een CACHE SQL server.

Om bepaalde data uit deze server te halen wil ik de dag van gister berekenen in de SQL query.
Als ik in de SQL handleiding van CACHE zoek hoe je dat kan doen kom ik op 2 opties.

1: NOW(), als ik die als "NOW()" in de query opneem dan krijg ik een melding dat dit niet herkent wordt als SQL functie. In de documentatie staat er een voorbeeld waarbij fn voor deze functie gezet wordt. Dus ik maak er "fn NOW()" van... maar ook dit heeft geen succes aangezien dan fn als tabel gezien wordt. Ook "(fn NOW())" werkt niet.

2: CURDATE(), bij deze het zelfde geprobeerd als bij NOW() zonder succes.

Als ik dit uitvoer:

code:
1
2
 HAVING
        N_R.FactVerkoopdagboek.Factuurdatum = DateAdd("d", -1, CURDATE())


Dan krijg ik de volgende melding:

code:
1
User defined SQL Function 'SQLUSER.CURDATE' does nog exist


Verder heb ik op google al flink gezocht naar dit probleem maar voor CACHE SQL heb ik hier geen oplossing kunnen vinden.

Iemand een tip of een idee hoe ik dit wel goed kan laten draaien? Ik wil dus de dag van gister in een SQL query zodat ik met die datum bepaalde records kan zoeken.

Acties:
  • 0 Henk 'm!

  • Ascathon
  • Registratie: Augustus 2004
  • Laatst online: 09-06 19:58
Zo maar om je een end op weg te helpen. Misschien is het totaal niet nuttig.
http://vista.intersystems...Page.cls?KEY=RSQL_getdate
http://vista.intersystems...KEY=RSQL_currenttimestamp
http://vista.intersystems....UI.Page.cls?KEY=RSQL_now

Daar staat ook hoe je fn NOW _correct_ moet gebruiken. ;)

[ Voor 8% gewijzigd door Ascathon op 21-05-2008 21:29 ]


Acties:
  • 0 Henk 'm!

Anoniem: 21921

code:
1
DATE_SUB(NOW(), INTERVAL 1 DAY)

Acties:
  • 0 Henk 'm!

  • Raffy
  • Registratie: September 2003
  • Laatst online: 12-03 00:12
Anoniem: 21921 schreef op woensdag 21 mei 2008 @ 21:31:
code:
1
DATE_SUB(NOW(), INTERVAL 1 DAY)
Het vreemde is als ik dit dus uitvoer:

code:
1
2
HAVING
        N_R.FactVerkoopdagboek.Factuurdatum = DATE_SUB(NOW(), INTERVAL 1 DAY)


Dan krijg ik de volgende melding:

code:
1
ERROR #5001: 359:SQL ERROR #359: User defined SQL Function 'SQLUSER.NOW' does not exist.


Snap niet waarom dit als user defined function wordt gezien...

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17-06 20:07

Robtimus

me Robtimus no like you

In SQL Server moet je het volgende uitvoeren, probeer dat eens:
SQL:
1
DATEDIFF(d, N_R.FactVerkoopdagboek.Factuurdatum, GETDATE()) = 0

Let op dat je geen quotes om de d zet. Deze gebruiken wij al jaren zo. Omdat je een DATEDIFF doet weet je ook meteen dat eventuele uren, minuten en seconden worden genegeerd bij de check.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • Raffy
  • Registratie: September 2003
  • Laatst online: 12-03 00:12
IceManX schreef op woensdag 21 mei 2008 @ 22:10:
In SQL Server moet je het volgende uitvoeren, probeer dat eens:
SQL:
1
DATEDIFF(d, N_R.FactVerkoopdagboek.Factuurdatum, GETDATE()) = 0

Let op dat je geen quotes om de d zet. Deze gebruiken wij al jaren zo. Omdat je een DATEDIFF doet weet je ook meteen dat eventuele uren, minuten en seconden worden genegeerd bij de check.
Volgens mij werkt het met dit stuk code wel.
Jammer genoeg is nu alleen de backup van de DB gestart en zal deze nog wel even draaien.

Morgen zal ik de query even opnieuw gaan testen.

IIG vast bedankt!

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17-06 20:07

Robtimus

me Robtimus no like you

Het moet trouwens "= 1" zijn ipv "= 0". DATEDIFF trekt van de 2e datum de 1e datum af, en het verschil moet dan 1 dag zijn: gisteren.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • Raffy
  • Registratie: September 2003
  • Laatst online: 12-03 00:12
IceManX schreef op woensdag 21 mei 2008 @ 22:59:
Het moet trouwens "= 1" zijn ipv "= 0". DATEDIFF trekt van de 2e datum de 1e datum af, en het verschil moet dan 1 dag zijn: gisteren.
SUPER!
het werkt precies zoals verwacht en met jou uitleg erbij ben ik meteen weer op de hoogte :-)


Dit is iig een stukje query die ik even opsla op een goede plek want is erg handig.

THNX

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17-06 20:07

Robtimus

me Robtimus no like you

Ter informatie, die d kun je ook vervangen door bv s voor seconden of m voor maanden. Even googelen voor overige waarden.

More than meets the eye
There is no I in TEAM... but there is ME
system specs

Pagina: 1