globe: MYSQL STRING Datum zu TIMESTAMP konvertieren

Beitrag lesen

n'abend,

Eien Unix-Timestamp ist nicht das, was man in ein TIMESTAMP-Feld füllen will.

Der Unix-Timestamp (auch epoch genannt, Anzahl Sekunden seit 01.01.1970 00:00:00) ist eigentlich nichts was man in einer Datenbank speichern will. Der Timestamp (YYYY-MM-DD HH:MM:SS) braucht nicht mehr Speicherplatz, ist aber direkt mit den MySQL'schen Datumsfunktionen benutzbar. Und im Zweifelsfall via PhpMyAdmin (o.ä.) für Menschen lesbar. Datümser™ will man nicht als Integer speichern.

Unix-Timestamps passen aber sehr gut in unsigned INT (noch bis 2038) oder BIGINT rein.

Für Datums-Typen (Date, Datetime, Timestamp, ..) kann das DBMS automatisch Datumstransformationen durchführen. Für Integer eher nicht so.

CREATE TABLE IF NOT EXISTS `dateconv` (  
  `datum_field` varchar(50) NOT NULL COMMENT 'Datum als String "DD.MM.YYYY HH:MM:SS"',  
  `timestamp_field` timestamp NULL default NULL COMMENT 'Datum als Timestamp'  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  
INSERT INTO `dateconv` (`datum_field`, `timestamp_field`) VALUES  
('13.10.2010 12:12:12', NULL),  
('15.08.2010 02:03:04', NULL);  
  
UPDATE dateconv SET timestamp_field = STR_TO_DATE(datum_field,'%d.%m.%Y %H:%i:%S');

weiterhin schönen abend...

--
#selfhtml hat ein Forum?
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|