Avatar billede purup Nybegynder
28. april 2006 - 23:17 Der er 3 kommentarer og
1 løsning

select * where timestamp = yesterday

Jeg har en kolonne, col af typen datetime.
Nu vil jeg gerne have alle rækker ud fra "i går" (et slags now() - 1 dag).
Jeg forestiller mig noget i retning af:

SELECT a,b,c FROM mytable WHERE  col < CURDATE() AND col > CURDATE() - "1 DAY"???

det må da være rimeligt simpelt
Avatar billede purup Nybegynder
28. april 2006 - 23:30 #1
jeg har bare mysql 3.1
Avatar billede kjulius Novice
29. april 2006 - 03:01 #2
MySQL har nogle funktioner til beregning af datoer: ADDDATE/DATE_ADD og SUBDATE/DATE_SUB (De to navne er synonyme - i hvert fald frem til version 4.1, hvor det bliver tilladt at udelade INTERVAL og DAY fra ADDDATE og SUBDATE funktionerne).

Din SQL fra spørgsmålet skulle altså blive til:

SELECT a,b,c FROM mytable WHERE  col < CURDATE() AND col > DATE_SUB(CURDATE(), INTERVAL 1 DAY)

Dog synes jeg ikke den ser helt logisk ud, da ingen rows vil finde nåde for den (mindre end idag, men samtidig større end i går?).

Hvis du bare vil have rækker fra i går (som du faktisk skriver i spørgsmålet), så er dette mere korrekt:

SELECT a,b,c FROM mytable WHERE col = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
Avatar billede purup Nybegynder
04. maj 2006 - 19:30 #3
tak for hjælpen - det hjalp - smid et svar
Avatar billede kjulius Novice
04. maj 2006 - 21:52 #4
Det var da godt... :-)
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