"y2k" znovu?

9. 8. 2009 16:06 Murděj Ukrutný

Asi víte o problému y2k problému, kdy měly v roce 2000 začít hořet počítače, vybuchovat elektrárny a domácí spotřebiče se vzbouřit a ovládnout zemi. Naštěstí se to stalo jen v amerických filmech.

Tak a teď proč o tom blábolím. Za několik málo desetiletí, někdy kolem roku 2038, má dojít e konci unixového 32bitového světa. A mě se to stalo už teď.

Předělávám jeden firemní systém. To co se dřív zadávalo jen na rok a měsíc (v db se používal typ VARCHAR(7) a formát byl rrrr-mm) se teď mělo zadávat i na dny (UNSIGNED INT formát unixtime).

Takže jsem spustil importní skript, potom kontrolní skript a … problém. Některé data se převedly správně a některé na 1.1.1970 ale původních datech takové hodnoty nemoli být.

Problém byl na konec v tom že některé položky měly platnost nastavenou na 2099–01. To by UNSIGNED INT měl zvlánout ale to co to nezvládlo je php které používá 32bitový znaménkový integer.

Nakonec jsem zjistil že 2099–01 se používalo pro „neomezenou“ platnost položky.

Takže si dávejte bacha , na problém roku 2038 můžete narazit už teď.

Sdílet