MySQL: Zahl in Datum umwandeln

closeDieser Beitrag wurde vor mehr als drei Monaten veröffentlicht. Bedenke bitte, dass die hier angebotene Information nicht mehr aktuell und gültig sein könnte. Informiere dich daher bitte auch an anderer Stelle über dieses Thema. Sollten sich neue Informationen ergeben haben, so kannst du mich auch gerne auf diese über einen Kommentar hinweisen. Vielen Dank!

Falls jemand mal z.B. einen Int-Wert in ein Datum umwandeln muss, kann “CONVERT” bzw. “CAST” weiterhelfen. Auch wenn man eigentlich die Datenbank im Vorhinein so gestalten sollte, dass “date” / “datetime” / … / als Datentyp verwendet wird. ;)

 

Beispiel-Datenbank:

CREATE TABLE `lall` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`IntDate` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `lall` VALUES (1,201001);
INSERT INTO `lall` VALUES (2,201002);
INSERT INTO `lall` VALUES (3,201003);
INSERT INTO `lall` VALUES (4,0);
INSERT INTO `lall` VALUES (5,201011);
INSERT INTO `lall` VALUES (6,201012);
INSERT INTO `lall` VALUES (7,201205);

SQL:

SELECT * FROM lall
WHERE ((CONVERT(CONCAT(IntDate, '01'), datetime))>NOW() - INTERVAL 12 MONTH OR IntDate=0)

< – dieses SELECT-Statement zeigt alle Datensätze an, welche nicht älter als 12 Monate sind oder als (int) Datum “0” eingetragen haben.

CONVERT -> http://dev.mysql.com/doc/refman/5.1/de/charset-convert.html
CONCAT -> http://dev.mysql.com/doc/refman/5.1/de/string-functions.html#id571625
NOW -> http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html#id586485

  • Nils

    Ein DATE_SUB() könnte man auch machen um noch deutlicher zu kennzeichnen das dort mit einem Datum gerechnet wird. Außerdem würde es noch besser die 2 Parameter des Vergleichs darstellen.

    NOW() - INTERVAL 12 MONTH
    ----
    DATE_SUB(NOW() , INTERVAL 12 MONTH)