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)
Datumsprobleme [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Datumsprobleme


 
nob
30-01-2002, 18:27 
 
Ich will eine Datumsvergleichsabfrage machen, ...

dabei sollen alle Daten angezeigt werden, deren eingetragenes Datum minus des Systemdatums <= (Variable)X sind.
Eine Einschränkung die ich da habe, ist das Datumsformat: TT.MM.JJJJ.

Hier die SQL-Query mit der ich es (unter anderem) versucht habe :
$result = mssql_query ("SELECT Artikelbezeichnung, Menge, Einheit, Einlagerdatum, Verfall
FROM $table2
WHERE ( Verfall - $date ) < = '$tl'
ORDER BY Artikelbezeichnung ASC ");

// $date : Aktuelles Systemdatum
// $tl : eingelesene Variable von HTML-Script z.B.: 2, 3, 4, ...

Bei mir meckert der Rechner dann:
SQL message: Zeile 3: Falsche Syntax in der Nähe von 'Jan'. (severity 15) in Verzeichniss_blabla

Wie kann ich denn nur die Tage rausfiltern?
Geht das überhaupt???


Heißen Dank im voraus

 
iQD
30-01-2002, 19:05 
 
Hi!

mySQL speichert den Datumstyp in der Form: YYYY-MM-DD
PHP aber in der Form: DD-MM-YYYY

Weshalb mySQL das Datum dann falsch interpretiert und/oder einen fehler meldet.

Zuerst das Datum von PHP in das mySQL-Format umwandeln.

Tage kannst berechnen mit der mySQL-Funktion: TO_DAYS(date);
Diese liefert die Tage(die vergangenen Tage seit Jahr 0).

Wenn diese Funktion auf das Systemdatum und auf das Verfalldatum anwendest kannst die Differenz leicht berechnen.

EXTRACT(type FROM date) extrahiert einen Teil des Datums, für Tage also:
EXTRACT(day from Verfall);
Natürlich in Verbindung mit dem SELECT-Statement zu sehen

Also für deinen Fall:

Zuerst mal das Systemdatum auf die Form: YYYY-MM-DD bringen für mySQL und dann:


$result = mssql_query ("SELECT Artikelbezeichnung, Menge, Einheit, Einlagerdatum, Verfall
FROM $table2
WHERE TO_DAYS(Verfall) - TO_DAYS($date) < = '$tl'
ORDER BY Artikelbezeichnung ");


ASC is übrigens Standardeinstellung und kannst weglassen; Die Klammern auch

Grüsse

[Editiert von iQD am 30-01-2002 um 19:16]


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:33 Uhr.