03. september 2005 - 17:37Der er
14 kommentarer og 1 løsning
Sql udtræk med dato > datoen i går
Hejsa
Hvordan kan jeg arbejde med datoer i min sql? Jeg vil gerne kun trække poster ud hvor dato > dagen i går. Hvis jeg bruger følgende:
SELECT * FROM `dato` WHERE dato > now()-86400
Så trækker den alle poster ud hvor datoen er størrere end 02-09-2005 17:40, dette går ikke da jeg så kan få poster ud hvor datoen godt kan være 02-09-2005 og jeg skal kun have poster med datoen 03-09-2005 eller derover.
Selv om dit felt er navngivet 'dato' ser det ud fra dit spørgsmål ud som om det er et datetime felt, og så bør du nok bruge DATE() funktionen til at extracte datedelen før sammenligningen:
SELECT * FROM 'dato' WHERE DATE('dato') = CURDATE();
Årsagen til at jeg ikke bruger DATE('dato') = CURDATE() er at så får jeg ikke de poster ud der har en dato der er nyere end i dag, eks poster med datoen for i morgen.
Mht det første du skrev så vil jeg teste det i morgen.
'0000-00-00' er ikke i det supportede range for en date eller datetime felttype.
MySQL Reference manualen siger hertil:
The DATETIME type is used when you need values that contain both date and time information. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'. (“Supported” means that although earlier values might work, there is no guarantee)
The DATE type is used when you need only a date value, without a time part. MySQL retrieves and displays DATE values in 'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.
Er du sikker på, at du har lagret en dato på '0000-00-00'?
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.