Datum berechnen und in DB schreiben
Thomas
- php
Hallo.
Ich möchte über PHP das aktuelle Datum ermitteln und in einer MySQL-Datenbank speichern.
Dann möchte ich ein Datum in der Zukunftz (z.B. 3 Tage später) errechnen und dieses ebenfalls in der Datenbank ablegen.
Ich versuche es schon seit Tagen mit den Befhelen aus einem PHP-Buch, komme aber nicht wirklich weiter.
Vielen Dank vorab für alle hilfreichen Beiträge,
Thomas
du darfst das datum nicht einfach so in die datenbank speicher sonder in sekunden seid 1.1.1970. und dan mit den funktionen mktime time und date arbeiten!!
ich hoffe das hilft dir
du darfst das datum nicht einfach so in die datenbank speicher sonder in sekunden seid 1.1.1970. und dan mit den funktionen mktime time und date arbeiten!!
ich hoffe das hilft dir
Sorry, nicht wirklich.
Mit mktime und date hab ich schon rumprobiert, aber nichts gescheites auf die Reihe gebracht.
Wie ermittle ich die Sekunden seit 1.1.1970?
Und wie muss ich das Datum formatieren um es abzulegen?
Gibts da vielleicht irgendwo einen Beispiel-Code.
Das würde mir wahrscheinlich am meisten helfen.
z. b.
test = 154846484 = mktime()
19.04.2004 = date("j.n.Y",test)
also mit mktime() bekommst du die aktuelle zeit, um 3 tage drauf zu rechnen machst du 60*60*24*3+ die zahl von mktime()
se mi h d
um die zahl die 11 stellig ist wieder in ein datum umzuwandel nimst du date(ausgabeformat, variable)
j = tag mit 00
n = monat 00
Y = jahr 0000
z. b.
test = 154846484 = mktime()
19.04.2004 = date("j.n.Y",test)also mit mktime() bekommst du die aktuelle zeit, um 3 tage drauf zu rechnen machst du 60*60*24*3+ die zahl von mktime()
se mi h d
um die zahl die 11 stellig ist wieder in ein datum umzuwandel nimst du date(ausgabeformat, variable)
j = tag mit 00
n = monat 00
Y = jahr 0000
Vielen Dank, das hat mir jetzt sehr weitergeholfen.
Hi Thomas,
schau Dir die SQL-abhängige Lösung nochmal an, bevor Du weiterprogrammierst. Die Laufzeiten sind wesentlich schneller. Also wenn Du das Datum nicht unbedingt im PHP bearbeiten musst, lass es sein ;)
http://forum.de.selfhtml.org/my/?t=79062&m=457825
Du kannst die Ausgabe der Datetime felder auch mit DATE_FORMAT(datum1, "%d.%m.%Y") exakt gleich formatieren, wie mit date.
Gruss
Stefan
Hi Thomas,
schau Dir die SQL-abhängige Lösung nochmal an, bevor Du weiterprogrammierst. Die Laufzeiten sind wesentlich schneller. Also wenn Du das Datum nicht unbedingt im PHP bearbeiten musst, lass es sein ;)
http://forum.de.selfhtml.org/my/?t=79062&m=457825
Du kannst die Ausgabe der Datetime felder auch mit DATE_FORMAT(datum1, "%d.%m.%Y") exakt gleich formatieren, wie mit date.
Klar. Ich werd mir beide Lösungen mal anscheuen.
Ist ja nie verkehrt wenn man mehrere Wege kennt ;-)
Danke,
Thomas
Hello,
du darfst das datum nicht einfach so in die datenbank speicher sonder in sekunden seid 1.1.1970. und dan mit den funktionen mktime time und date arbeiten!!
Wer sagt das denn? Wozu ist denn dann der Datentyp date da?
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Thomas,
Ich möchte über PHP das aktuelle Datum ermitteln und in einer MySQL-Datenbank speichern.
warum lässt du mysql nicht selbst das Datum ermitteln?
- Wie bekomme ich das aktuelle Datum?
mit time()[1] bekommst du den aktuellen Timestamp, und mit date()[2] kannst du ihn dir formatieren (in mysql: NOW()[3])
- Wie errechne ich das zukünftige Datum?
mit strtotime('+3 days')[4] o.ä. (mysql: mit ADDDATE(NOW(),INTERVAL 3 DAY)[5] (beides ungetestet)
- in welcher Form schreibe ich das Datum in die Datenbank?
als Datum :-)
- welchen Datentyp muss ich in der Datenbank verwenden (date?)
ja (oder DATETIME wenn du die Zeit auch brauchst)
- wie kann ich zwei Datum-Variablen in Bezug auf früher oder später vergleichen?
wenn du z.B. alle Datensätze haben willst, die älter als 5 Tage sind, kannst du die z.B. mit "... WHERE datum < DATE_SUB(NOW(), INTERVAL 5 DAY)"[6] abfragen.
Wenn du erst in php damit arbeiten willst, kannst du die Zeiten auch als Timestamp abfragen (->UNIX_TIMESTAMP(datum)).
Grüße aus Nürnberg
Tobias
[1] http://www.php.net/time
[2] http://www.php.net/date
[3] http://www.mysql.de/doc/en/Date_and_time_functions.html#IDX1384
[4] http://www.php.net/strtotime
[5] http://www.mysql.de/doc/en/Date_and_time_functions.html#IDX1353
[6] http://www.mysql.de/doc/en/Date_and_time_functions.html#IDX1391
[7] http://www.mysql.de/doc/en/Date_and_time_functions.html#IDX1402
Hi,
bei schreiben in die Datenbank schreibst Du einfach:
"INSERT INTO ... (..., datum1, datum2) VALUES (..., NOW(), NOW() + INTERVAL 3 DAY);"
Damit hast Du dann alles innerhalb des SQL erledigt und brauchst nicht PHP berechnen lassen, kostet nur Zeit.
Als Datentyp empfehle ich Dir 'datetime' dann hast Du auch die Zeit des Eintrages dabei, kann mitunter wichtig sein.
Ein Vergleich läuft genauso, Beispiele:
1. "SELECT ... WHERE datum1 < NOW();" // Älter als JETZT
2. "SELECT ... WHERE datum2 > NOW();" // Neuer als JETZT
3. "SELECT ... WHERE NOW() BETWEEN datum1 AND datum 2;" // Dazwischen
Viele Grüße
Stefan