Datum in einer Date formatierten Spalte erfassen

Alles, was PHP betrifft, kann hier besprochen werden.

Datum in einer Date formatierten Spalte erfassen

Postby family19660 » 07. February 2012 22:07

Hallo Gemeinde,

Hoffe das ich hier mit meinem Problem richtig bin.

Ich habe das xampp Paket 1.7.7 auf einem Windows XP Rechner laufen. In einer Datenbanktabelle sollen Fristen erfasst werden. Die entsprechenden Spalten der Tabelle sind alle im Format Date (0000-00-00) formatiert. Die zu erfassenden Daten werden im Format YYYY-MM-DD per Update oder Insert-Befehl an die Datenbank übergeben.

Heute nun wollte ich folgendes Datum zu Testzwecken in die Datenbank schreiben: 2051-10-01

In der Datenbank ist angekommen: 1970-01-01

Habe schon gegoogelt, aber nichts konkretes gefunden.

Woran kann es liegen, dass nicht das korrekte Datum in die Datenbank geschrieben wird?

Gibt es irgendwo eine "Datumsgrenze" mit der ich arbeiten kann und dann ist Schluss.


Gruß Steffen
family19660
 
Posts: 16
Joined: 27. March 2009 20:17
XAMPP Version: 5.6.3
Operating System: Windows 7 - php 5.3.8

Re: Datum in einer Date formatierten Spalte erfassen

Postby Altrea » 07. February 2012 22:24

Hallo Steffen,

Ich machs kurz: falscher Datentyp.
Du hast vermutlich den Datentyp TIMESTAMP genommen. Dieser kann Datumsangaben zwischen 1970-01-01 00:00:01 und 2038-01-19 03:14:07 speichern.
Möchtest du Datumsangaben außerhalb dieses Range speichern stehen dir noch die Datentypen DATE und DATETIME zur verfügung, die bis ins Jahr 9999 reichen.

mehr dazu hier: http://dev.mysql.com/doc/refman/5.5/en/datetime.html
Infos zum Speicherverbrauch: http://dev.mysql.com/doc/refman/5.5/en/ ... ments.html

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6836
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: Windows 10 Pro x64

Re: Datum in einer Date formatierten Spalte erfassen

Postby family19660 » 08. February 2012 20:06

Hallo Altrea,

das Problem liegt nicht im Spaltentyp. Die Spalten sind als DATE formatiert. Habe gefunden, wo das Problem herkommt, weiss jedoch nicht, wie ich das Datum anders umformatieren soll.

Der Nutzer gibt das Datum in einem Formular im Format DD.MM.YYYY ein. Ich versuche dann dieses Datum mittels POST zu übergeben und umzuwandeln.

$str = "12.12.2050";
$arrDatum = explode('.', $str, 3);
$frist = date("Y-m-d", mktime(0,0,0,$arrDatum[1],$arrDatum[0],$arrDatum[2]));

echo $frist;

Diese Funktion funktioniert nicht. Das Ergebnis ist 1970-01-01. Liegt dies an der Funktion mktime? Wenn ja, wie bekomme ich ein korrektes Datum?

Gruß Steffen
family19660
 
Posts: 16
Joined: 27. March 2009 20:17
XAMPP Version: 5.6.3
Operating System: Windows 7 - php 5.3.8

Re: Datum in einer Date formatierten Spalte erfassen

Postby Altrea » 08. February 2012 20:58

family19660 wrote:das Problem liegt nicht im Spaltentyp. Die Spalten sind als DATE formatiert.
[...]
Liegt dies an der Funktion mktime? Wenn ja, wie bekomme ich ein korrektes Datum?

Okay, also nicht der Datentyp, aber selbes Problem. Auch mktime() generiert einen UNIX-Timestamp und der ist nunmal, Speichergrößenbedingt, auf einen relativ engen Rahmen beschränkt.

Umgehen kannst du das zum Beispiel mit der neuen DateTime() Klasse. Dafür benötigst du aber mindestens PHP 5.2.0. Oder du bastelst dir aus den Usereingaben einfach direkt einen String zusammen, statt die Eingaben mit mktime() und date() hin- und wieder zurück zu konvertieren.

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6836
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: Windows 10 Pro x64


Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests