Vad händer om du modifierar din fråga lite:
SELECT DATE_FORMAT( datum, '%Y' ) AS year, DATE_FORMAT( datum, '%M' ) AS
MONTH FROM news
WHERE YEAR(datum) = YEAR('2008-01-01')
GROUP BY MONTH
ORDER BY datum DESC
3 svar · 450 visningar · startad av tanten
Här får jag ut alla månader som finns i databasen
try{
$stmt = $pdo->prepare("SELECT DATE_FORMAT( datum, '%Y' ) AS year, DATE_FORMAT( datum, '%M' ) AS month FROM news
GROUP BY year,month
ORDER BY datum DESC
");
$stmt->execute();
while ($result = $stmt->fetch(PDO::FETCH_OBJ))
{
echo "<dd><a href=\"";
echo strftime("%B", strtotime($result->month));
echo ".php\">";
echo strftime("%B", strtotime($result->month));
echo "</a></dd>\n";
Men om jag då försöker få ut bara månaderna 2008 och byter ut selecten med
SELECT DATE_FORMAT( datum, '%Y' ) AS year, DATE_FORMAT( datum, '%M' ) AS
MONTH FROM news
WHERE datum >= '2008-01-01'
GROUP BY MONTH
ORDER BY datum DESC
Så blir outputen 7 stycken januari. I phpMyAdmin blir det rätt.
Varför?
Vad händer om du modifierar din fråga lite:
SELECT DATE_FORMAT( datum, '%Y' ) AS year, DATE_FORMAT( datum, '%M' ) AS
MONTH FROM news
WHERE YEAR(datum) = YEAR('2008-01-01')
GROUP BY MONTH
ORDER BY datum DESC
Då blir det tomt och i phpmyadmin blir det "MySQL returnerade ett tomt resultat (dvs inga rader)".
Nu fick jag det att fungera med
SELECT DATE_FORMAT( datum, '%M' ) AS
month FROM news
WHERE datum >= '2008-01-01'
GROUP BY month
ORDER BY datum DESC
dvs month med gemener, och ta bort året i date_format.
Kan inte precis påstå att jag förstår varför casesensitiv i ena fallet men inte i det andra... :q .