webForumDet fria alternativet

månadsproblem

3 svar · 450 visningar · startad av tanten

tantenMedlem sedan nov. 20051 658 inlägg
#1

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?

K@llenMedlem sedan mars 20032 654 inlägg
#2

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
tantenMedlem sedan nov. 20051 658 inlägg
#3

Då blir det tomt och i phpmyadmin blir det "MySQL returnerade ett tomt resultat (dvs inga rader)".

tantenMedlem sedan nov. 20051 658 inlägg
#4

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 .

Genererad på 369 ms · cache AV · v20260730165559-full.f96bc7eb