Datumskonvertierung und herausziehen des Jahres

Hallo Forum,

über PHP speichere ich ein Datum in meine mysql-DB ab.
Felddeklaration: date, null

Das gespeicherte Datum wird in dem Format yyyy-mm-dd gespeichert.

Nun hole ich mir den Wert aus der Datenbank und versuche nun nur das Jahr mit folgender Funktion herauszuziehen: date(Y, $datum)

Ergebnis ist aber immer 01.01.1970

Das bedeutet ja, dass der eingelesene Datumswert nicht interpretiert werden kann. Leider verstehe ich noch nicht warum das so ist.

Liegt es daran, dass ich keinen UNIX-Timestamp hinterlege?
Sollte das der Fall sein, dann verstehe ich auch nicht, warum es mit der aktuellen Windows-Systemzeit funktioniert.

Kann mit bitte jemand mit einem guten Tip abhilfe leisten?

Besten Dank und viele Grüße aus Köln

Hallo Forum,

über PHP speichere ich ein Datum in meine mysql-DB ab.
Felddeklaration: date, null

Das gespeicherte Datum wird in dem Format yyyy-mm-dd
gespeichert.

Nun hole ich mir den Wert aus der Datenbank und versuche nun
nur das Jahr mit folgender Funktion herauszuziehen: date(Y,
$datum)

Ergebnis ist aber immer 01.01.1970

Das bedeutet ja, dass der eingelesene Datumswert nicht
interpretiert werden kann. Leider verstehe ich noch nicht
warum das so ist.

wenn $datum deine date-spalte ist, geht das nicht, weil in letzerer „2009-03-17“ steht und php das als string erhaelt, die php-date-funktion einen timestamp erwartet.

Liegt es daran, dass ich keinen UNIX-Timestamp hinterlege?
Sollte das der Fall sein, dann verstehe ich auch nicht, warum
es mit der aktuellen Windows-Systemzeit funktioniert.

die du wie ermittelt hast?

Kann mit bitte jemand mit einem guten Tip abhilfe leisten?

select datumsspalte, year(datumsspalte) as jahr, unix_timestampt(datumsspalte) as ts

Hallo Jörg,

besten Dank für die schnelle Antwort.

Die aktuelle Windows-Systemzeit habe ich ganz einfach mit „date(Y)“ ermittelt.

Ich habe das Problem nun ohne größere Änderungen in der Datenbank vorzunehmen anders gelöst.

Zunächst habe ich alle meine Datumsfelder die ich dummerweise als „Varchar“ deklariert habe (warum ich so einen blödsinn gemacht habe, weis ich nicht) in „date“ geändert.

Dann habe ich mir aus der PHP Dokumentation ein snippet kopiert, welches auf einfachster Art und Weise das englische Datum mm-dd-YYYY in dd.mm.YYYY konvertiert. Anschliessend habe ich mit list($day, $month, $year) = split(’[-.]’, $variable) das Datum aufgesplittet und habe im Anschluss das Jahr $year herausgezogen.

Ist zwar kompliziert aber Funktioniert einwandfrei.

Gruß,

Mo

ich mit list($day, $month, $year) = split(’[-.]’, $variable)
das Datum aufgesplittet und habe im Anschluss das Jahr $year
herausgezogen.

das hättest Du mit Deiner Varchar-Variable auch machen können *schulterzuck*

Du kannst das Datum direkt in dem Format aus der Datenbank ziehen in dem du es brauchst.

Dafür gibt es die MYSQL Funktion DATE_FORMAT(date, format)

das query würde dann so aussehen:

SELECT …, DATE_FORMAT(datum, „%Y“) FROM …

Gruß