Avatar billede Slettet bruger
14. februar 2004 - 11:34 Der er 5 kommentarer og
1 løsning

Problemer med DateDiff til MySQL

Igår skiftede jeg database-løsning fra Access til MySQL, og det er faktisk nemt at gå til indtil videre. Der er bare nogle få ændringer, så jeg ikke helt kender til, og som jeg faktisk gerne vil have lidt hjælp til.

F.eks. er der lige det her, som ikke fungerer helt. Jeg har hørt, at tiden bliver behandlet anderledes i MySQL end i Access. Noget med at man bruge #dato# i Access, og at man i MySQL bruger 'dato' istedet. Dette er bare ikke tilfældet her, for her er noget med DateDiff. Fjerner jeg DateDiff-betingelsen, så rapporteres der ingen fejl.

Her er sætningen:

rs.open "SELECT Count(*) AS online_users FROM retroclassics_users WHERE online_status = online AND DateDiff('n', online, now()) < 10", Conn, 1, 1

Fejl: ODBC driver does not support the requested properties.


Uden DateDiff ser det sådan ud:

rs.open "SELECT Count(*) AS online_users FROM retroclassics_users WHERE online_status = online", Conn, 1, 1

Fejl: Ingen.

Så jeg skal have smidt denne linie ind på en eller anden måde:

AND DateDiff('n', online, now()) < 10
Avatar billede Spotgun Seniormester
14. februar 2004 - 11:36 #1
Uden at være den store MySQL haj, kunne jeg forestille mig at MySQL ikke understøtter DateDiff metoden, da det er en ren microsoft/asp/vbscript-ting...
Avatar billede Slettet bruger
14. februar 2004 - 11:45 #2
hmm, det lyder underligt. Hvordan kan det så gøres?
Avatar billede groenaert Novice
14. februar 2004 - 11:52 #3
Avatar billede eagleeye Praktikant
14. februar 2004 - 12:09 #4
DateDiff findes skam i mysql :) her en liste med dat/time funktioner:
http://www.mysql.com/doc/en/Date_and_time_functions.html

www.mysql.com indeholder rigtig god information.

mySQL's datediff kan så kun give antal dage imellem to datoer.
Men så kan man ligge 10 minutter til online og tjekke om det er større end now():

rs.open "SELECT Count(*) AS online_users FROM retroclassics_users WHERE online_status = online AND DATE_ADD(online, INTERVAL 10 MINUTE) > Now()", Conn, 1, 1


men skal der ikke også ping omkring her: online_status = online
Sådan her: online_status = 'online'
Eller sammenligner den kolonne online_status  med kolonnen online
Avatar billede Slettet bruger
14. februar 2004 - 12:58 #5
eagleeye: Tak for hjælpen igen :) det virker. Jeg skal lige ha vænnet mig til de forskellige tegn.

Du må gerne oprette et svar.
Avatar billede eagleeye Praktikant
14. februar 2004 - 13:54 #6
Ok :)
Ja der er lidt forskel på de indbyggede funktioner fra mySQL til access. Men www.mysql.com er et godt sted at kigge de har beskervet næste alle funktioner med et eksempel, dog er siden måske lidt uoverskuelig de første par gange man kigger der :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Riskpoint A/S (Riskpoint Solutions Limited)

IT Business Analyst

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger en IT-supporterelev til lokal IT på Haderslev Kaserne

Rambøll Management Consulting

Senior Software Engineer