Datum zu groß für Umwandlung in Timestamp?
Uhfe
- php
Hallo,
ich habe eine Datenbank, da ist in einem Datumsfeld für "unbegrenzt" als Datum der 31.01.2099 eingetragen. Sollte ja auch erstmal reichen. Ich frage dieses Feld per php - odbc_result ab und will mit ihm als Datum rechnen. Also muß ich es in einen Timestamp umwandeln.
Nur für alle Daten oberhalb Januar 2038 gibt mir strtotime($datum) als ergebnis -1 (entspricht dem 01.01.1970) zurück. Das erschwert natürlich die Abfrage ob das Feld größer oder kleiner als ein Vergleichsdatum ist. Kann ich diese Grenze nicht hochsetzen.
Und Nein, ich kann das Datenbankfeld nicht ändern!
Bin Dankbar für alle Antworten
Uhfe
Nur für alle Daten oberhalb Januar 2038 gibt mir strtotime($datum) als ergebnis -1 (entspricht dem 01.01.1970) zurück. Das erschwert natürlich die Abfrage ob das Feld größer oder kleiner als ein Vergleichsdatum ist. Kann ich diese Grenze nicht hochsetzen.
Nein, die Zeit wird, wie unter Unix üblich, in Sekunden seit dem 1.1.1970 UTC in einem 32-Bit-Feld gespeichert - und das läuft 2038 über. Es handelt sich hier um das gleiche Problem wie beim Jahr 2000-Problem.
Du wirst mit einer eigenen Datumsklasse arbeiten müssen.
Gruß,
soenk.e
Hi,
Nur für alle Daten oberhalb Januar 2038 gibt mir strtotime($datum) als ergebnis -1 (entspricht dem 01.01.1970) zurück.
ein timestamp entspricht üblicherweise einem vorzeichenbehaftetem 32-Bit Integer - das entspricht im positiven Bereich 2147483647 == 19.1.2038. Mehr ist nicht vorgesehen und ändern kann man diese Grenze m.W. nicht.
Und Nein, ich kann das Datenbankfeld nicht ändern!
Spricht denn etwas dagegen, für den Wert "unbegrenzt" eben das Datum 1.1.1970 zu verwenden? Nur so als Idee.
Gruß,
Andreas.