28. april 2006 - 23:17Der 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"???
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)
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.