Benutzt man die mySQL Funktion FROM_UNIXTIME mit negativen Werten, so gibt diese null zurück (zumindest ab einer Version nach 4.0.x).
Der Tip oder besser Workaround lautet: Berechnet das Datum dann doch bitte in der Anwendung, nicht in der Datenbank.
Ich bin generell kein Freund von Workarounds, da diese das Gefühl von “Hilfskrampe” hinterlassen. Also habe ich mal länger geforscht und bin dabei auf diese Sinnvolle Konstruktion gestoßen, die mir das gewünschte Datum korrekt zurückliefert. Das ganze kann man auch schön in mySQL auch mit DATE_FORMAT formatieren.
Im Prinzip ist es recht simpel: Ist das Feld positiv (inklusive 0), dann einfach die funktionierende Variante benutzen, ist es negativ, dann ausgehend vom UNIX_TIMESTAMP(0) via DATE_ADD in Sekundenschritten zurück gehen.
Der UNIX_TIMESTAMP steht in meinem Beispiel im Feld “geburtstag” und gibt entweder direkt den Wert zurück oder den umformatierten:
IF (geburtstag>=0,FROM_UNIXTIME(geburtstag),DATE_ADD(FROM_UNIXTIME(0),INTERVAL geburtstag SECOND) )
Ich hoffe, ich erspare auf diesem Weg dem ein oder anderen langes suchen.
Sehr geil!!! 😉
Einzig funktionierende saubere Lösung. 😉
Super Idee und ich bin ganz deiner Meinung – die einzige saubere Lösung.
wow, Danke!!!