[ASP] datetime verkeerd uit mysql database

Pagina: 1
Acties:

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 17-05 10:33
Ik vind hier niks zinnigs over via google of de zoekfunctie hier.
Ik heb vandaag een applicatie van een collega moeten overzetten naar een nieuwe server en natuurlijk gaat dat niet zonder kleerscheuren. Al snel merkte ik dat overal waar een datetime uit de database werd uitgelezen er een type mismatch optrad.
Ik heb dan even een eigen testpagina gemaakt, waar ik de database open (met de "MySQL ODBC 3.51 Driver") en een van de queries uitvoer waar het mis gaat. Dezelfde query laat ik ook rechtstreeks op de MySQL database los. In de MySQL database zie ik mooi "2004-07-22 01:17:09" staan, maar als ik mijn asp pagina inlaadt dan toont hij "?????????9".
Dus controleer ik even het datatype (VarType() functie) van dat veld en een gewoon varchar.
Bij de varchar krijg ik mooi 8 terug, maar bij de tijd krijg ik 8209 terug. Als ik bij microsoft ga kijken (http://msdn.microsoft.com...t56/html/vsconvartype.asp) dan vind ik deze waarde niet terug.

Iemand een idee? Ik heb geen idee waar het aan kan liggen.
Ik heb wel gemerkt dat op de oude server "MySQL Connector/ODBC 3.51" geinstalleerd staat en op de nieuwe "MyODBC 3.51.8", maar volgens mij is dit gewoon een recentere versie ?? Als ik in de connection pool ga kijken bij ODBC dan zie ik op beide servers ook gewoon "MySQL ODBC 3.51 Driver".

Verwijderd

De MySQL output van datum en tijd formaten kun je aan passen met de DATE_FORMAT functie:

DATE_FORMAT(date,format)
http://dev.mysql.com/doc/...e_and_time_functions.html

Standaard staat de timestamp op YYYY MM DD HH MM SS misschien dat je ASP app een ander formaat wil!

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 17-05 10:33
Als ik gebruik maak van DATE_FORMAT() dan toont hij inderdaad dat deel wat ik vraag wel af. Dit is ook logisch want als ik met VarType ga kijken dan is dit een string wat ik van MySQL krijg en geen datum meer.
En om een of andere bizarre reden krijg ik onmogelijk een datum doorgegeven naar mijn asp code.... 8)7

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
ASP:
1
If IsDate(string) Then string = CDate(string)

[ Voor 16% gewijzigd door faabman op 23-07-2004 13:21 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Ik zou proberen om je test pagina op de oude server te zetten en de data van de 2 machines vergelijken.

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 17-05 10:33
faabman schreef op 23 juli 2004 @ 13:21:
ASP:
1
If IsDate(string) Then string = CDate(string)
Explain yourself please ?

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 17-05 10:33
Verwijderd schreef op 23 juli 2004 @ 13:24:
Ik zou proberen om je test pagina op de oude server te zetten en de data van de 2 machines vergelijken.
Ik heb even mijn testpagina op de oude server gezet, m.a.w. daar simpelweg Response.Write rsDB("contract_offline_time") gedaan en hij toont heel mooi de datum...
Nieuwe server -> Type mismatch, of m.a.w. de uitleg die ik hierboven al schreef :?

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik heb volgens mij ook wel eens configuratieproblemen gehad met MySQL en de drivers. Was weliswaar jdbc, maar het probleem was hetzelfde. Datumvelden worden niet goed overgehaald als de serverinstellingen voor datum en tijd anders zijn dan waar de driver vandaan gedraaid wordt. Dit zou eigenlijk niet mogen uitmaken, maar ja, daar heb je nu dus niets aan. Dit probleem hadden we geloof ik ook met floats en doubles, maar dat weet ik niet zeker meer.

De enige oplossing was de serverinstellingen gelijktrekken.

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 17-05 10:33
bigbeng schreef op 23 juli 2004 @ 13:38:
Ik heb volgens mij ook wel eens configuratieproblemen gehad met MySQL en de drivers. Was weliswaar jdbc, maar het probleem was hetzelfde. Datumvelden worden niet goed overgehaald als de serverinstellingen voor datum en tijd anders zijn dan waar de driver vandaan gedraaid wordt. Dit zou eigenlijk niet mogen uitmaken, maar ja, daar heb je nu dus niets aan. Dit probleem hadden we geloof ik ook met floats en doubles, maar dat weet ik niet zeker meer.

De enige oplossing was de serverinstellingen gelijktrekken.
Over welke instellingen heb je het dan juist? Ik heb me al gek gespeeld met allerlei instellingen...

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
hmm, het nu van documenteren van oplossingen komt nu ineens bovendrijven.
[geheugengraaf modus]
Ik dacht dat het om de regional options voor datum en tijd weergave ging, maar het zou ook de de "locale" setting kunnen zijn die het probleem veroorzaakte.
[/geheugengraaf modus]

Dit zijn de enige twee dingen die me zo snel te binnen schieten, succes met oplossen van dit eigenaardige probleem.

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 17-05 10:33
Mja met al die regional settings heb ik al zitten spelen...
Nuja ik ken de problemen die er normaal zijn, dat een datum op server 1 en server 2 anders worden weergegeven en dat je dat kan fixen door die regional settings, maar dit slaat echt nergens op :(
Ik heb trouwens nu ook de binaries die op de oude server stonden van de ODBC en de MySQL gekopieerd naar de nieuwe server en die erop geinstalleerd. Het was een serieuze wanhoopspoging, maar nu staat op beide servers dezelfde versie...

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 17-05 10:33
Ik heb een vermoeden dat het iets te maken heeft met het exporteren en terug importeren van de data.
Ik had een nieuwe tabel aangemaakt met een datetime, deze datetime gelezen en dat werkt wel.
Origineel had ik de directory in mysql/data overgekopieerd naar de nieuwe server, ik heb nu eens een effectieve export gedaan van de tabellen en data (via phpmyadmin), maar de fout blijft bestaan. Dit zijn toch correcte manieren om data te exporteren, niet?
Pagina: 1