Toon posts:

[SQL] Date bij SQL Server anders dan bij Access?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een intranetapplicatie (ASP VBS) die oorspronkelijk een Access database gebruikte aan het porten om een SQL Server database te gebruiken.

Bij de Access database werkte de volgende SQL query naar behoren:

code:
1
[..] WHERE dateMessage BETWEEN #01-Jan-96# AND #31-Dec-04# [..]


De database is nu dus geport naar SQL Server en de applicatie werkt feilloos, totdat ik de query met de bovenstaande WHERE clause probeer te executeren, dan wordt de onderstaande error teruggegeven:
Error Type:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Line 1: Incorrect syntax near '#'.
search_process.asp,
line 610


etc
Wordt deze error inderdaad veroorzaakt door de #, die SQL Server niet lijkt te herkennen of zit het 'm toch in iets anders?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
SQL Server kent idd die # niet.

Probeer eens dit:
code:
1
2
3
WHERE dateMessage BETWEEN 
CONVERT (datetime, '01/01/1996') AND 
CONVERT (datetime, '12/31/2004')


Maar, kijk ook eens naar parametrized queries. Dan ben je van al dat gedoe af. Je definieert dan een (of meerdere) parameter in je query, en je geeft die dan een waarde. Je hoeft je niets aan te trekken van de DMY formaat, etc.....

[ Voor 25% gewijzigd door whoami op 15-03-2004 22:02 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 15 maart 2004 @ 22:02:
SQL Server kent idd die # niet.

Probeer eens dit:
code:
1
2
3
WHERE dateMessage BETWEEN 
CONVERT (datetime, '01/01/1996') AND 
CONVERT (datetime, '12/31/2004')


Maar, kijk ook eens naar parametrized queries. Dan ben je van al dat gedoe af. Je definieert dan een (of meerdere) parameter in je query, en je geeft die dan een waarde. Je hoeft je niets aan te trekken van de DMY formaat, etc.....
Dankuzeer. Parametrized queries klinkt als een plezierige oplossing, maar ik heb geen idee hoe je zoiets maakt in SQL Server. :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Maak je gebruik van stored procedures, of van embedded SQL statements in je ASP/VBscript code?

Hoe je het in ASP precies doet, weet ik ook niet, maar op google (of hier in de search) vind je wel eea terug geloof ik.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Embedded queries. Dit omdat bepaalde queries dynamisch gegenereerd moeten worden (soms wel meerdere kantjes groot, wanneer uitgeschreven).

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Misschien kan je hier eens naar kijken:

klik

https://fgheysels.github.io/


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
whoami vergeet dat in P&W FAQ - SQL dit onderwerp ook staat. :+

Oops! Google Chrome could not find www.rijks%20museum.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
P_de_B schreef op 15 maart 2004 @ 22:26:
whoami vergeet dat in P&W FAQ - SQL dit onderwerp ook staat. :+
Idd, maar dat is met code voorbeelden in .NET, dus daar heeft ie niet zoveel aan. :P

https://fgheysels.github.io/


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
whoami schreef op 15 maart 2004 @ 22:26:
[...]


Idd, maar dat is met code voorbeelden in .NET, dus daar heeft ie niet zoveel aan. :P
]
grmbl, niet goed gekeken idd 8)7

edit: ik kan het mis hebben ('t is al even geleden) maar volgens mij klopt jou aangehaalde voorbeeld niet. Je moet toch ook nog CreateParameter en
ADOB.Command.Parameters.Append doen?

dit lijkt me beter

[ Voor 37% gewijzigd door P_de_B op 15-03-2004 22:34 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 17-02 19:31
mja

met stored procedures kan je ook een hoop queries dynamisch aanmaken, maar het ligt beetje aan je applicatie ;D

voor datum dingen kan je trouwens beter de internationale standaard gebruiken, dus niet
iets met 16/03/2004 ofzo, ik heb al zoooooo vaak datum conversie problemen gehad door die duffe regio instellingen in MS SQL...

Zet je je default language op Engels, dan is het opeens MM/DD/YYYY... zet je het op Dutch dan wordt het DD-MM-YYYY... om zot van te worden.

als je dan direct met datums gaat werken binnen je queries (hardcoded zeg maar), dan liever zo doen: CONVERT(smalldatetime, '20040316') (mag ook ander datum type zijn hoor).

YYYYMMDD formaat dus. Dan komt die er sowieso altijd goed in te staan in de database, ongeacht de taal instellingen (en dus regio instellingen).

Maja, genoeg leesvoer in BOL (books online) :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

komakeef schreef op 16 maart 2004 @ 17:15:
mja

met stored procedures kan je ook een hoop queries dynamisch aanmaken, maar het ligt beetje aan je applicatie ;D
Ik mis nu eigenlijk de parametrized queries; imho zijn deze eigenlijk te allen tijde beter dan puur dynamisch, mbv code, je SQL statement op bouwen. SP's zijn niet per definitie nodig om met parameters te gaan werken.

En met SP's dynamisch queries aanmaken lijkt me een klein beetje brak voor performance.. :P

[ Voor 11% gewijzigd door gorgi_19 op 16-03-2004 17:18 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 17-02 19:31
ach, valt mee, sql gaat om data manipulatie. Hehehe... wat pas slecht voor performance is, is het gebruik van cursors in sp's...

brrr, die dingen zijn traag :( magoe, offtopic...

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
komakeef schreef op 17 maart 2004 @ 14:09:
ach, valt mee, sql gaat om data manipulatie. Hehehe... wat pas slecht voor performance is, is het gebruik van cursors in sp's...
Hoe ga jij dan dynamisch queries maken in een SP ? Dmv string concatenatie en de sp_executesql procedure ?
Dat is ook slecht voor de performance?

Of dmv de ISNULL en COALESCE functies? Die zijn ook trager dan een embedded dynamische parametrized query.

https://fgheysels.github.io/

Pagina: 1