Toon posts:

[MSDE / SQL SERVER] datum probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mensen,

Ik ben bezig met een visualbasic.NET applicatie, die zowel met MSDE als met SQL server werkt.
Ik had altijd gedacht dat de techniek van MSDE en SQL server precies hetzelfde was.

Echter als ik met MSDE verbinding maak, dan blijkt dat als ik een datum invoer in een textveld, dat de dag en de maand wordt omgedraaid.
Ook als ik bij landinstellingen bij datumsettings invul dat de volgorde dd-mm-yyyy moet zijn, toch blijft hij het omdraaien.

Bij SQLserver treedt dit probleem niet op. we hebben het inmiddels op een stuk of 10 pc's getest, een paar met MSDE en een paar metr SQL server. Alleen bij de MSDE database krijgen we te maken met dit probleem. Heeft iemand een idee?

Bij voorbaat dank,

Glupke

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Andere vraag: Zal het je een zorg zijn hoe SQL server een datum opslaat? Desnoods doet die dat binair / Base64 op. Met localization zet je toch je datum goed aan de clientkant.

Het probleem ligt trouwens waarschijnlijk aan de Regional Settings van het account waar SQL Server / MSDE onder draait.

[ Voor 32% gewijzigd door gorgi_19 op 26-11-2003 14:19 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Gebruik parametrized queries voor je SQL statements, je hoeft je dan geen zorgen te maken over het formaat waarmee je die datums naar je DB stuurt.

De manier waarop de datums in je DB worden opgeslagen, zal je worst wezen. Het is enkel maar een representatie, want SQL Server slaat DateTime's op als een floating-point getal. Het gedeeltee voor de komma stelt het aantal dagen voor dat verstreken is vanaf een bepaalde datum (die startdatum is afhankelijk van het type datetime (smalldatetime, datetime) je gebruikt).
Het gedeelte na de komma heeft het aantal seconden of milliseconden weer dat verstreken is sinds 00:00.

Je moet er dus gewoon in je VB.NET applicatie voor zorgen dat de datums in het gewenste formaat getoond worden.

[ Voor 7% gewijzigd door whoami op 26-11-2003 14:26 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Maar beste mensen,

zoals u al aangaf, is het is mij inderdaad ook een worst hoe SQL server het opslaat, alleen daarmee is mijn probleem niet opgelost.

stel dat ik een string heb strDatum = "4-11-2003'
als ik dan een "SELECT * FROM table WHERE date = " & strDatum
uitvoer, dan geeft MSDE mij de records waar de datum 11 april is, en SQL server geeft mij de records waar de datum 4 november is.

EN DIT HEEFT DUS NOGMAALS NIKS MET REGIONAL SETTINGS TE MAKEN!!!!!!!

Glupke

[ Voor 4% gewijzigd door Verwijderd op 26-11-2003 16:26 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 26 november 2003 @ 16:24:

EN DIT HEEFT DUS NOGMAALS NIKS MET REGIONAL SETTINGS TE MAKEN!!!!!!!
Dat mag je de amerikanen wijsmaken, die 11 april als 4-11 schrijven, terwijl in Europa 11 april als 11-4 geschreven wordt. Maar idd, dit heeft in jouw ogen niets met regional settings te maken.. |:(

Heb je trouwens uberhaupt nog dat stuk van whoami over parametrized queries gelezen? Waarom denk je dat ze Convert.ToDate trouwens hebben uitgevonden, en parametrized queries? Om dit soort ongein te voorkomen en SQL injection ook te voorkomen.

Enfin, als je het perse op jouw manier wilt doen, kijk eens door je datum tussen # te zetten; zou het probleem ook moeten oplossen.

[ Voor 38% gewijzigd door gorgi_19 op 26-11-2003 16:35 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Je hoeft niet zo te roepen, of zo gefrustreerd te reageren.
Ik heb je een linkje naar onze FAQ gegeven waar een compleet voorbeeld over parametrized queries in .NET in staat, die jouw probleem oplost.

Je hoeft trouwens ook niet steeds jouw naam onder je post te zetten, want dat leest nogal irritant.

[ Voor 21% gewijzigd door whoami op 26-11-2003 16:29 ]

https://fgheysels.github.io/


  • trogdor
  • Registratie: Mei 2003
  • Laatst online: 27-10-2025
Je kan dan wel zeggen dat het niets met regional settings te maken heeft, dat heeft het in zekere zin dus wel.
Sql server doet vreemde dingen met localisation, namelijk afentoe lekker negeren.
Vandaar amerikaanse datum notering.
Maar het wordt nog erger.
Probeer het eens met 25-11-2003 of zo, wedden dat sqlserver dan oppeens besluit om toch maar europeaanse datumnotatie te gebruiken?

Het is lang geleden dat ik hier mee te maken had, toen opgelost door alle datums in japanse notatie als text op te slaan ( yyyy-mm-dd ) (ja ranzig ik weet het) maar expliciet casten lijkt me voldoende, of lees ik ergens overheen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

trogdor schreef op 26 november 2003 @ 19:02:
Sql server doet vreemde dingen met localisation, namelijk afentoe lekker negeren.
Vandaar amerikaanse datum notering.
Da's dus afhankelijk van de regional settings; ik geloof van waar het account onder draait :P
Probeer het eens met 25-11-2003 of zo, wedden dat sqlserver dan oppeens besluit om toch maar europeaanse datumnotatie te gebruiken?
Da's niet opeens vreemd, da's by default zo. Is alleen een van de features die ze er wel uit hadden mogen slopen. Een datum is of goed, of fout. En niet als het onlogisch is (dus fout), een andere manier proberen dat het dan opeens wel goed is.
Het is lang geleden dat ik hier mee te maken had, toen opgelost door alle datums in japanse notatie als text op te slaan ( yyyy-mm-dd ) (ja ranzig ik weet het) maar expliciet casten lijkt me voldoende, of lees ik ergens overheen?
Mja, waarom? datetime lijkt me ook uitermate geschikt er voor; 'k heb er zelf iig nog nooit problemen mee gehad :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-05 08:21

The best thing about UDP jokes is that I don't care if you get them or not.

Pagina: 1