[SQL] Fout in querystring

Pagina: 1
Acties:

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:29

Rhapsody

In Metal We Trust

Topicstarter
ik heb de volgende sql query:

code:
1
2
3
4
SELECT [E-care].[Product].* 
FROM [E-care].[Product] 
WHERE ([E-care].[Product].[Registratiedatum] >= '5/1/2003' 
AND [E-care].[Product].[Registratiedatum] <= '6/1/2003')


dit houdt dus in dat ie alle records weer moet geven met een registratiedatum van 5-1-2003 of 6-1-2003.

In de database staan diverse records die aan deze criteria voldoen, maar toch krijg ik geen resultaten. Ik krijg ook geen foutmelding.

Er moet wel een fout in zitten maar ik kan hem niet vinden.

[ Voor 5% gewijzigd door Rhapsody op 07-01-2003 21:39 ]

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:40
Waarschijnlijk heeft het te maken met die datums.
Als je die quotes rond die data nu eens vervangt door #

(En die [ ] rond de veld en tabelnamen vind ik maar ranzig).

https://fgheysels.github.io/


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:29

Rhapsody

In Metal We Trust

Topicstarter
als ik dat vervang krijg ik een error in de query-analyzer (SQL server 2k)

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '#'.


Datatype van Registratie datum is smalldatetime

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:40
Hmmm....
Ik heb hier MSDE, maar geen databank waarin ik een tabel heb met een datumveld, dus kan het ff niet testen. (Ook geen zin om een te maken).

Maar als ik in Access (I know, misschien niet hetzelfde) het volgende doe:
code:
1
select * from tabel where datumveld >= #10/12/2002#

dan lukt dat wel hoor.

https://fgheysels.github.io/


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Hij zal wel zoeken naar datums tussen 1 mei en 1 juni 2003 (maand/dag/jaar ipv. dag/maand/jaar)

| Toen / Nu


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:29

Rhapsody

In Metal We Trust

Topicstarter
mm erg raar, bij mij lukt dat dus niet, ik krijg telkens:


Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '#'.

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:40
Ok, forget the #'s.
In MSDE krijg ik die fout ook.

[ Voor 57% gewijzigd door whoami op 07-01-2003 21:54 ]

https://fgheysels.github.io/


Verwijderd

code:
1
2
3
4
SELECT * 
FROM Product
WHERE (Registratiedatum >= '5/1/2003' 
AND Registratiedatum <= '6/1/2003')


Opmerking 1: Ik zou dit gewoon proberen, heb je veel minder mogelijk foutkansen. Als iets niet werkt strip ik de code beetje bij beetje dan heb je snel genoeg door waar de fout zit...

Opmerking 2: Waarom gebruik je geen between?!

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:29

Rhapsody

In Metal We Trust

Topicstarter
code:
1
2
3
4
SELECT [E-care].[Product].* 
FROM [E-care].[Product] 
WHERE ([E-care].[Product].[Registratiedatum] > 5/1/2003 
AND [E-care].[Product].[Registratiedatum] < 7/1/2003)


werkt wel, maar ik krijg dus geen resultaten terwijl ik diverse records heb met een datum van 6/1/2003

🇪🇺 pro Europa!


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:29

Rhapsody

In Metal We Trust

Topicstarter
code:
1
2
3
4
SELECT [E-care].[Product].* 
FROM [E-care].[Product] 
WHERE ([E-care].[Product].[Registratiedatum] 
BETWEEN '1/7/2003' AND '1/10/2003')


Met de between statement lijkt dit te werken :D Hij geeft nu enkel alle records van de 7de

[ Voor 7% gewijzigd door Rhapsody op 07-01-2003 22:00 . Reden: Layout vernaggeld ]

🇪🇺 pro Europa!


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Geeft
code:
1
2
3
4
SELECT [E-care].[Product].* 
FROM [E-care].[Product] 
WHERE ([E-care].[Product].[Registratiedatum] > 1/5/2003 
AND [E-care].[Product].[Registratiedatum] < 1/7/2003)
wel resultaat?

Het ligt dus aan de datum opmaak, SqlServer ziet 't als mm/dd/yyy, niet als dd/mm/yyyy. (zoals ik al eerder zei :/ )

[ Voor 4% gewijzigd door SuperRembo op 07-01-2003 22:03 ]

| Toen / Nu


Verwijderd

Rhapsody schreef op 07 January 2003 @ 22:00:

Met de between statement lijkt dit te werken :D Hij geeft nu enkel alle records van de 7de
Allen bericht uit de maand juli..?! Huh wat raar.

Domme vraag misschien: heb je wel records met een datum die groter is dan de 7e?!

(Nee niet hard slaan please, ik tikte dit ook maar in een verstandsverbijstering.. ;))

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:29

Rhapsody

In Metal We Trust

Topicstarter
nee (7 - jan is grootste, maar ik heb hem al goed getest), hij geeft alles van 7 januari op de een of andere manier moet ik MM-DD-YY formaat gebruiken :S (zoals superrembo zei dus ;))

Maar goed, ook dit werkt weer, dank u

[ Voor 8% gewijzigd door Rhapsody op 07-01-2003 22:07 ]

🇪🇺 pro Europa!


Verwijderd

Ahh dat gekut weer... Kijk daar wel erg mee uit... Ben ook eens een weekje ofzo bezig geweest waarom een query op 1 dbbserver liep als een zonnetje en em op de andere totaal liet crashen... En dat kwam alleen maar omdat de datuminstelling verkeerd stonden.

Eentje op mm/dd andere op dd/mm

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:29

Rhapsody

In Metal We Trust

Topicstarter
dank je voor de tip, zal er op letten!

🇪🇺 pro Europa!

Pagina: 1