PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Datumsabfrage


Moses
18.09.2002, 15:19:55
Hallo,
habe mal wieder eine rechte Anfängerfrage, an der ich mir momentan aber ziemlich die Zähne ausbeisse....

Meine Daten kommen von der Datenbank - nein das ist noch nicht mein Problem ;-).

Möchte mir jetzt eine Seite erstellen mit nicht erledigten Aufgaben in den nächsten Drei Monaten.
Das Datum liegt in meiner Datenbank in zwei verschiedenen Foramten vor:
einmal als Datum: z.B. 2002-09-18
einmal aufgeschlüsselt in:
Tag: 18
Monat: 9
Jahr: 2002

Wie muß ich nun argumentieren, daß mir nur die nicht erledigten Aufgaben der nächsten Drei Monate angezeigt werden
also Aufgaben in Sept, Okt, Nov.

Habe schon einiges probiert bin aber leider nicht weitergekommen (habe auch mit den diversen Datumsfunktion rum experimentiert - leider erfolglos).
Besonders muß man ja bedenken, dass wenn ich diese Abfrage z.B. im Dezember ausführe ja die Monate 12, 1, 2 berücksichtigt werden müssen. Also einfach eine Abfrage mit größer als Monat heute (+1bzw. +2) funktioniert da nicht.

Die Ausgabe sollte in einer Tabelle erfolgen:
Nicht erledigte Aufgaben im September
1. Aufgabe
2. Aufgabe
Nicht erledigte Aufgaben im Oktober
1. Aufgabe
2. Aufgabe
Nicht erledigte Aufgaben im November
1. Aufgabe
2. Aufgabe

Kann mir einer einen guten Tip geben wie die Argumentationskette aussehen muss, oder hat jemand sowas ähnliches schon mal gemacht

Für jede Hilfe dankbar,
Moses

MiH
18.09.2002, 16:13:14
speicher doch das datum in einem unix_timestamp. dann rechnest du einfach 90 tage hinzu und kannst mit einer where klausel die datensätze auslesen.

Moses
18.09.2002, 16:54:51
Hallo,
danke für den Tip, aber wie muß das dann aussehen?
Kann es leider nicht ausprobieren, daher hier die Frage:

$sql=(meine Abfrage);
$erg = mysql_query($sql);
if (!$erg) die("<br>Abfrage nicht erfolgreich");
else {
while ($Aus = mysql_fetch_array($erg))
{
$date= $Aus["A_Date"]; - A_Date ist Datum aus DB im Format 2002-09-19
$time1 = strtotime("now") ;
$time2 = strtotime("+90 day");
$time3 = strtotime("$date");

if ($time3>=$time1 && $time3<=$time2)
{
echo "<table>";
etc.
}
Dann müßte er mir doch die Tabelle bringen mit allen Terminen innerhalb der nächsten 90 Tage - oder habe ich da was falsch verstanden?

Wäre ja schon mal ein großer Schritt in die richtige Richtung, wenn ich nun aber die Termine aufgeschlüsselt haben will in die jeweiligen Monate (unabhängig davon an welchem Tag im Monat ich die Abfrage durchführe), geht es so aber trotzdem nicht, oder?

Ich weiß ich frage hier dumm nach, aber ich versuche halt zu verstehen (Betonung auf "Versuche" ;-)

Progman
18.09.2002, 17:00:54
SELECT
xyz
FROM
tab
WHERE
Datum BETWEEN
NOW()
AND
DATE_ADD(NOW(),'INTERVAL 3 MONTH')

oder so ähnlich. hab jetzt nicht geguckt ob die Parameter von Date_add so richtig sind.