Ik heb een MySQL tabel met een veld datum met type DATETIME.

Als ik zover ben dat ik een datum op het scherm afdruk lukt dit:

$res = mysql_query("SELECT * FROM tbldata");
$row = mysql_fetch_array($res);
echo($row["datum"]);

Maar als ik de functie getdate toepas op $row["datum"]:

$datum = getdate($row["datum"]);
echo($datum["year"]);

dan krijg ik 1970, altijd (en elk record heeft een jaartal hoger dan 2000)...
Een DATETIME veld geeft geen timestamp maar gewoon de datum in formaat YYYY-MM-DD HH:MM:SS. De functie getdate() moet wel een timestamp krijgen anders werkt hij niet. In je tabel kun je niet voor niets ook kiezen voor TIMESTAMP ipv DATETIME :)
Mogelijke oplossing zou zijn om $row['datum'] uit elkaar te halen en in te vullen in mktime() om daaruit een timestamp te krijgen:

<?
$hour = substr(11, 2, $row['datum']);
$minute = substr(14, 2, $row['datum']);
$second = substr(17, 2, $row['datum']);
$month = substr(5, 2, $row['datum']);
$day = substr(8, 2, $row['datum']);
$year = substr(0, 4, $row['datum']);
$timestamp = mktime($hour, $minute, $second, $month, $day, $year);
$datum = getdate($timestamp);
?>

Reageren