2016-11-16 4 views
0

Ich folgte der ersten Antwort auf this question, aber ich habe ein paar Probleme mit meiner SQL-Abfrage. Ich bekomme kein Ergebnis.
Welchen Fehler habe ich gemacht?
Wie kann ich CURDATE immer am ersten Tag des Monats einstellen?sql nehmen alle Fragen von letzten Monat

SELECT DATE_FORMAT(`date`, '%Y-%m-%d') , `price` 
FROM `sales` 
WHERE `id` = :id 
AND (`date` BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()) 

bearbeiten Whole Code:

$verkaufmonat3 = 0; 
$verkaufmonatanzahl2 = 0; 
$verkaufmonat4 = array(); 
$sqluser5 = $X['dbh']->prepare("SELECT DATE_FORMAT(`date`, '%Y-%m-%d') , `preis` FROM `verkauf` WHERE `vertreterid` = :id AND (`date` BETWEEN CURDATE(), '%Y-%m-01' - INTERVAL 60 DAY AND CURDATE(), '%Y-%m-01')"); 
$sqluser5->execute(array(
':id'=>$_SESSION['id'] 
)); 
$verkaufmonatanzahl2 = $sqluser5->rowCount(); 
$verkaufmonat4 = $sqluser5->fetchAll(); 
for ($a = 0; $a <= $verkaufmonatanzahl2; $a++) { 
     $verkaufmonat3 += $verkaufmonat2[$a]['preis']; 
} 

In meiner Datenbank habe ich einen Verkauf auf dem 2016.10.28 Wich hat für ex. ein Wert von 50 eur. So sollte mein $ verkaufmonat3 50 sein ist es aber nicht, es ist 0.

+0

http://stackoverflow.com/questions/11808232/how-do-i-get-the-first-day-of-the-curr Ent-Monat, http://blog.sqlauthority.com/2014/04/09/mysql-finding-first-day-and-last-day-of-a-month/, – ADyson

+0

Ich glaube, das Problem ist, dass Sie ID angeben hier, während Sie Daten brauchen reichen nur – Stan

Antwort

5

Ihre Frage ist nicht klar, aber der erste Tag des laufenden Monats erhalten dann verwenden Sie

SELECT DATE_FORMAT(CURDATE() , '%Y-%m-1') 

Also, wenn Sie das wollen Daten des Vormonats versuchen

SELECT 
    DATE_FORMAT(CURDATE() , '%Y-%m-1') - INTERVAL 1 MONTH as first_day, 
    DATE_FORMAT(CURDATE() , '%Y-%m-1') - INTERVAL 1 DAY as last_day 

BEDEUTUNG

WHERE `date` BETWEEN DATE_FORMAT(CURDATE() , '%Y-%m-1') - INTERVAL 1 MONTH 
        AND DATE_FORMAT(CURDATE() , '%Y-%m-1') - INTERVAL 1 DAY 
+0

Vielen Dank, das war das zweite Problem, das ich hatte. Das Hauptproblem/die Frage war, welchen Fehler ich gemacht habe, weil es nicht funktioniert. – delato468

+0

Sie müssen ein wenig mehr erklären, was das Problem ist, zeigen Sie uns einige Beispieldaten und erwartetes Ergebnis. –

+0

Ich habe den obigen Code hinzugefügt. – delato468