2 Datenfelder (datum/uhrzeit) zu einem (datetime) zusammenfü

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
CyberNibbler
Mitglied
Beiträge: 2
Registriert: 06.08.2008 13:26

2 Datenfelder (datum/uhrzeit) zu einem (datetime) zusammenfü

Beitrag von CyberNibbler »

Hallo,

ich habe eine MySQL-Datenbanktabelle, in welcher ich Datum und Uhrzeit gespeichert habe.
Dummerweise habe ich das vor langer Zeit unklug angestellt.
Das Datum ist im Feld datum als Typ varchar(10) (Beispiel 06.08.2008) und die Uhrzeit ist im Feld uhrzeit als Typ varchar(8) (Beispiel: 14:00:00) gespeichert.
Ich habe gehört, dass es effektivier ist, dies im datetime Format zu speichern.
Nun habe ich ein neues Feld mit dem Namen datetime vom Typ datetime erstellt und will die Informationen aus den Feldern Datum und Uhrzeit in das datetime Feld übertragen.

Ich habe dies mit folgendendem Code versucht, doch leider klappt dies nicht.
UPDATE zugriff SET datetime = (SELECT CONCAT(SUBSTRING(datum, -4), '-', SUBSTRING(datum, 4, 5), '-', SUBSTRING(datum, 1, 2), ' ', uhrzeit))
phpMyAdmin gibt mir dann nur folgendes aus:
Betroffene Datensätze: 0 (die Abfrage dauerte 0.0007 sek.)
Auch wenn ich es mit folgendem SQL-code ausprobiere.
UPDATE zugriff SET datetime = (SELECT CONCAT(SUBSTRING(datum, -4), '-', SUBSTRING(datum, 4, 5), '-', SUBSTRING(datum, 1, 2), ' ', uhrzeit)) WHERE datum='06.08.2008'
Sind keine Datensätze betroffen. Und es befinden sich auf jeden Fall Datensätze vom Feld datum mit dem Wert 06.08.2008 in der Tabelle.

Was mache ich falsch?
Wie kann ich die 2 Datenfelder zu dem einem zusammenfügen?
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Beitrag von BB-BF-BM »

Hallo!

Die MySQL-Funktion SUBSTRING erwartet als dritten Parameter die Länge, nicht den Index des letzten Zeichens.

Code: Alles auswählen

SELECT CONCAT(SUBSTRING(datum, -4), '-', SUBSTRING(datum, 4, 5), '-', SUBSTRING(datum, 1, 2), ' ', uhrzeit) FROM `zugriff`
gibt so etwas aus wie 2008-01.20-31 10:59:00

Code: Alles auswählen

SELECT CONCAT(SUBSTRING(datum, -4), '-', SUBSTRING(datum, 4, 2), '-', SUBSTRING(datum, 1, 2), ' ', uhrzeit) FROM `zugriff`
hingegen gibt folgendes aus: 2008-01-31 10:59:00

Folgender Code sollte also funktionieren:

Code: Alles auswählen

UPDATE zugriff SET datetime = CONCAT(SUBSTRING(datum, -4), '-', SUBSTRING(datum, 4, 2), '-', SUBSTRING(datum, 1, 2), ' ', uhrzeit)
Zuletzt geändert von BB-BF-BM am 06.08.2008 17:10, insgesamt 1-mal geändert.
CyberNibbler
Mitglied
Beiträge: 2
Registriert: 06.08.2008 13:26

Beitrag von CyberNibbler »

Ah, vielen Dank, BB-BF-BM. :)

Also war das SELECT falsch & die 5. ^^
Antworten

Zurück zu „Coding & Technik“