Eintrag vor XX Minuten geschrieben

Hab derzeit leider nur ein "Datum" Feld, wo dann z.B. "21.03.2010 15:38" drin steht.
Hab damals den Fehler gemacht da nicht direkt den Timestamp einzutragen :/

Jetzt muss ich das ganze irgendwie so umstellen dass da 2011-03-21 15:38 steht, bekomm das aber wie oben zu sehen nicht ganz hin :/
 
Nur ein Datum Feld (Typ DATE ? ? ?) kann doch nicht sein. Dann würde doch auch nur ein Datum drinstehen. Bist du sicher das es nicht schon vom Typ Timestamp ist?
 
Nichts einfacher las die Umwandlung - im SQL
SQL:
--So kannst du dein String in ein MySQL-Timestamp-Format bringen
STR_TO_DATE('21.03.2010 15:38', '%d.%m.%Y %H:%i')
-- und so direkt in ein Timestamp, wie ihn PHP intepretieren kann
UNIX_TIMESTAMP(STR_TO_DATE('21.03.2010 15:38', '%d.%m.%Y %H:%i'))

Natürlich das Datum darin durch dein Feld ersetzen....
 
Zuletzt bearbeitet von einem Moderator:
Na dann würde ich der Datenbank kurzfristig ein Feld vom Typ Timestamp hinzufügen und mit einem kleinen PHP Skript

1) die vorhandenen Werte entsprechend umwandeln und in das neue Feld eintragen
2) den Feldtyp des jetzigen Feldes von VARCHAR auf TIMESTAMP ändern (was eigentlich schon reichen sollte)
3) die unter Punkt 1 erstellten Werte in das ursprüngliche Feld übertragen
4) das neue Feld wieder löschen

Aber wenn in dem "Textfeld" wirklich Datum und Uhrzeit stehen, sollte es funktionieren wenn man den Feldtyp ändert (aber ohne Garantie).
 
Eigentlich kannst du gleich alles in der DB berechnen lassen. Erspart dir viel unnötiges PHP und Sekundenrechnerei

SQL:
SELECT
	@from_date := STR_TO_DATE(myTable.myDatum, '%d.%m.%Y %H:%i') AS from_date,
	@to_date := NOW() AS to_date,
	CASE
		WHEN @value:=TIMESTAMPDIFF(YEAR, @from_date, @to_date) THEN 'year'
		WHEN @value:=TIMESTAMPDIFF(MONTH, @from_date, @to_date) THEN 'month'
		WHEN @value:=TIMESTAMPDIFF(DAY, @from_date, @to_date) THEN 'mday'
		WHEN @value:=TIMESTAMPDIFF(HOUR, @from_date, @to_date) THEN 'hours'
		WHEN @value:=TIMESTAMPDIFF(MINUTE, @from_date, @to_date) THEN 'minutes'
		WHEN @value:=TIMESTAMPDIFF(SECOND, @from_date, @to_date) THEN 'seconds'
	END AS dimension,
	@value AS value
FROM
    myTable
 
Zuletzt bearbeitet von einem Moderator:
Zurück