Jag har en databastabell som innehåller pussel. En av kolumnerna är en datetime som talar om när pusslet kom dit. Jag skriver en fråga i SQL som plockar ut alla pussel så att de nyaste hamnar först, så långt funkar det utmärkt. :)
Men... Nu vill jag lägga in en header i utskriften: These puzzles have been available since <datum>
Denna ska alltså bara stå EN gång per datum (eftersom vanligtvis flera pussel adderas samma dag). Jag vet hur jag ska få in det i whileslingan, det som strular till det är datumhanteringen.
Kan jag jämföra bara datumdelen (dvs strunta i tidsinfon) mellan två datetimes?
Hur skriver jag enklast ut bara datumdelen?
Varför är inte två stycken '2007-11-09 00:00:00' lika?
Om du skriver så här i din mysql-query i stället för bara namnet på din datetime-kolumn så får du bara ut datumdelen:
SELECT LEFT(din_datetime-kolumn, 10) AS datum
Hum? :q
SQL skrev:
weird..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 'SELECT LEFT(Pok, 10) AS datum, Po, Pi, Pk FROM T' at line 1
på följande fråga:
$sql = "SELECT Pi, Pt, Pb, SELECT LEFT(Pok, 10) AS datum, Po, Pi, Pk
FROM P natural join T natural join K
WHERE ....
ORDER BY P.Pok DESC";
Fuel, ditt förslag leder till ett fel om ett "not well formed date", vilket gör att datumet kommer ut som något som inträffade på tidigt 70-tal, och jag kan försäkra att det datumet saknar varje likhet med hur det borde se ut...
Märkligt... Ger samma felmeddelande som tydals förslag? Även testat med ' runt datumformatet, ingen skillnad.
SQL skrev:
weird..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 'SELECT DATE_FORMAT(Pok, "%Y-%m-%d") AS datum, Po, Pi, Pk ' at line 1
Min explode plockar ut rätt del, men jämförelsen mellan två lika datum funkar inte. Headern skrivs fortfarande ut för alla pussel.