Avatar billede yeahdesign Nybegynder
28. december 2003 - 23:54 Der er 8 kommentarer og
2 løsninger

DateAdd med MySQL

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.12-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('n',-2,Now()) AND sted <> 'logaf' Order by Brugernavn' at line

Den er gal med DateAdd i MySQL når jeg kører en sådan her SQL-streng:
Select * from ho_brugere Where ho_brugere.online > DateAdd('n',-2,Now()) AND sted <> 'logaf' Order by ho_brugernavn

Nogen løsning?
Avatar billede medions Nybegynder
28. december 2003 - 23:56 #1
Select * from ho_brugere Where ho_brugere.online > " & DateAdd("n",-2,Now())  & " AND sted <> 'logaf' Order by ho_brugernavn

//>Rune
Avatar billede medions Nybegynder
28. december 2003 - 23:56 #2
DateAdd() er ikke en funktion i MySQL!

//>Rune
Avatar billede eagleeye Praktikant
28. december 2003 - 23:57 #3
mySQL's dateadd er lidt anderledes en Access.: 

DATE_ADD(date,INTERVAL expr type)

Så prøv:

Select * from ho_brugere Where ho_brugere.online > DATE_ADD(Now,-2 MONTH) AND sted <> 'logaf' Order by ho_brugernavn
Avatar billede eagleeye Praktikant
28. december 2003 - 23:58 #4
der skulle lige () på now:

Select * from ho_brugere Where ho_brugere.online > DATE_ADD(Now(),-2 MONTH) AND sted <> 'logaf' Order by ho_brugernavn
Avatar billede eagleeye Praktikant
28. december 2003 - 23:59 #5
doh jeg glemmer igen man skal også skriv INTERVAL:

Select * from ho_brugere Where ho_brugere.online > DATE_ADD(Now(),- INTERVAL 2 MONTH) AND sted <> 'logaf' Order by ho_brugernavn


Du kan se meget mere omkring mySQL dato funktion her:
http://www.mysql.com/doc/en/Date_and_time_functions.html
Avatar billede yeahdesign Nybegynder
29. december 2003 - 00:00 #6
Ved jeg godt, Rune. Men det er lidt sent, og jeg kan mærke jeg skal skynde mig på do. Men ellers så kigger jeg på begge jeres løsning i morgen. :)
Avatar billede medions Nybegynder
29. december 2003 - 00:01 #7
eagleeye> Jeg mener ikke du kan bruge Now() i MySQL, det hedder CURDATE()!

DATE_ADD(CURDATE(), - INTERVAL 2 MONTH)

//>Rune
Avatar billede eagleeye Praktikant
29. december 2003 - 00:05 #8
Så må jeg nok rette dig lidt for now() virker ganske fint i mysql:

NOW()
Returns the current date and time as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or numeric context:
Avatar billede eagleeye Praktikant
29. december 2003 - 00:08 #9
men når det er mysql er det hele jo afhængigt af hvilken version man køre, når man bruger date funktionerne :)
Avatar billede yeahdesign Nybegynder
29. december 2003 - 19:40 #10
Jeg brugte medions løsning med ikke at køre DateAdd direkte i strengen. Dog smed jeg to appostroffer på, så det virkede. :P

Men DATE_ADD virker kun med datoer, så vidt jeg har forstået. Og jeg fik problemmer ved -. Og jeg kiggede på ADD_TIME, men har jeg ikke 4.1.1 af MySQL, så det var vist lettest at følge medions eksempel.
Ga' eagleeye lidt point også, fordi han gjorde mig lidt klogere på MySQL. :P
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