Avatar billede blach Nybegynder
05. februar 2006 - 19:46 Der er 14 kommentarer og
1 løsning

Dato indenfor interval

Kan ikke få nedenstående til at virke:

SELECT * FROM tabel WHERE (dato_slut > now() AND dato_slut < DATE_ADD(now(), INTERVAL 24 HOUR)) ORDER BY dato_slut

- Jeg skal hente alt fra databasen som slutter indenfor 24 timer. Min dato_slut er gemt i DATETIME i MySQL databasen!


Fejl:
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 'WHERE dato_slut >= now() ORDER BY dato_slut' at line 1
Avatar billede cpufan Juniormester
05. februar 2006 - 20:52 #1
SELECT * FROM tbl_name WHERE DATE_SUB(CURDATE(),INTERVAL 1 DAY) >= date_col;
Avatar billede cpufan Juniormester
05. februar 2006 - 20:53 #2
SELECT * FROM tbl_name WHERE DATE_SUB(CURDATE(),INTERVAL 1 DAY) >= dato_slut ORDER BY dato_slut;
Avatar billede blach Nybegynder
05. februar 2006 - 21:57 #3
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 'WHERE DATE_SUB(CURDATE(),INTERVAL 1 DAY) >= dato_slut ORDER BY dato_slut' at line 1

Det er den heller ikke tilfreds med...
Avatar billede cpufan Juniormester
05. februar 2006 - 22:01 #4
det er måske mysql 5 syntax
Avatar billede blach Nybegynder
05. februar 2006 - 22:15 #5
Hmm, kan vi lave det på en anden måde?
Avatar billede blach Nybegynder
05. februar 2006 - 22:18 #6
Ikke engang denne virker:
WHERE dato_slut >= CURDATE()

Så CURDATE() er vel ikke så god? Kan man sammenligne med nuv.dato i en variabel?
Avatar billede cpufan Juniormester
05. februar 2006 - 23:15 #7
den hedder CURRENT_DATE()
så måske kan CURRENT_DATE()+1 også bruges

SELECT * FROM tbl_name WHERE  dato_slut between current_date() and current_date()+1 ORDER BY dato_slut;
Avatar billede cpufan Juniormester
05. februar 2006 - 23:18 #8
faktisk skal vi tilbage til din gl. og ændre den til et timestamp:

SELECT * FROM tabel WHERE (dato_slut > CURRENT_TIMESTAMP() AND dato_slut < DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR)) ORDER BY dato_slut
Avatar billede cpufan Juniormester
05. februar 2006 - 23:19 #9
i hvert tilfælde hvis du kører mysql 4.1.3 eller nyere
Avatar billede blach Nybegynder
05. februar 2006 - 23:52 #10
Det vil den ikke - har også prøvet på mit webhotel:

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 'WHERE dato_slut > CURRENT_TIMESTAMP() ORDER BY dato_slut LIMIT

Og det var bare på:
WHERE dato_slut > CURRENT_TIMESTAMP()
Avatar billede cpufan Juniormester
06. februar 2006 - 09:42 #11
hvad så med now()
Avatar billede blach Nybegynder
06. februar 2006 - 13:08 #12
Dette ser ud til at virke:

(dato_slut > now() AND dato_slut < DATE_ADD(now(), INTERVAL 24 HOUR))

Installerede mySQL den nyeste og det virker åbenbart bedre :)

Tak for hjælpen!
Avatar billede cpufan Juniormester
06. februar 2006 - 14:13 #13
ja fint nok, men hvad så når den skal ud på webhotellet, så er du vel ligevidt???
Avatar billede blach Nybegynder
06. februar 2006 - 14:29 #14
Jamen den sætning virker åbenbart fint :S

Hvad er egentlig forskellen på now(), CURRENT_TIMESTAMP() og current_date() ?
Avatar billede cpufan Juniormester
06. februar 2006 - 14:34 #15
now() og current_timestamp() er identiske
current_date() giver vel datoen uden klokkeslet
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
Computerworld tilbyder specialiserede kurser i database-management

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