Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Problem beim Vergleich mit curdate und interval [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Problem beim Vergleich mit curdate und interval


 
Rocco
09-01-2004, 13:53 
 
Ich moechte nachgucken wieviele Bestellungen ein Kunde in den letzten 3 Monaten getaetigt hat.

Das Datum der Bestellungen ist im Format YYYYMMDD abgelegt.

Ein Vergleich waere dann logischerweise sowas:


SELECT count(orders) FROM ORDERS
WHERE kundenid=12345
AND kaufdatum>=DATE_SUB(CURDATE(),INTERVAL 3 MONTH)+0


Ich hab jetzt leider festgestellt dass beispielsweise

DATE_SUB(CURDATE(),INTERVAL 3 MONTH)+0

20030109000000 zurueckgibt (also zusaetzliche nullen fuer die uhrzeit), daher klappt der Vergleich nicht, ich brauch den Rueckgabewert nur mit den datumsrelevanten feldern.

Wie benutze ich curdate zusammen mit interval, damit die 6 Nullen nicht zurueckgeliefert werden? Wenn ich '+0' im Query weglasse wird nur das Datum zurueckgeliefert aber im falschen Format (XXXX-XX-XX).

Rocco

 
schmalle
09-01-2004, 13:57 
 
ersetze mal curdate() durch now()

 
Rocco
09-01-2004, 14:00 
 
SELECT DATE_SUB( NOW( ) ,
INTERVAL 12
MONTH ) + 0

20030109210515



:(

Rocco

 
Abraxax
09-01-2004, 14:02 
 
SELECT
LEFT(DATE_SUB( NOW(), INTERVAL 12 MONTH ) + 0, 8)

## -> 200301097

 
schmalle
09-01-2004, 14:02 
 
??? was genau willst du jetzt? ich denke du willst die anzahl der bestellungen??? wenn ja, dann : SELECT count(orders) as alle
FROM ORDERS
WHERE kundenid=12345
AND kaufdatum>=DATE_SUB(NOW(), INTERVAL 3 MONTH)

 
Rocco
09-01-2004, 14:10 
 
@Abraxax

Brilliant! Danke!

@schmalle

Das Problem ist doch, dass das gespeicherte Datum keine abschliessenden 6 Nullen hat, die dein (und mein) Vorschlag aber zusaetzlich zurueckgeben nach der Berechnung.

Wenn ein Kaufdatum 20031201 ist und ich suche mit deiner Methode die letzten 3 Monate ab vergleicht er alle Kaufdaten die groesser als 20030909000000 sind, und die gibt es nicht.

Abraxaxs Vorschlag funktioniert wunderbar, weil die Nullen weggeschnitten werden.

Rocco


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:47 Uhr.