Para insertar en los campos de fecha y hora de mySQL, la cadena debe estar en un formato determinado para que mySQL la entienda. El problema es que php tiene sus propios pensamientos e ideas sobre cómo se representan las fechas. Cuando se trata de fechas entre los dos, debe traducir.
Si en php está tratando con un objeto de tiempo, puede hacer esto para obtener una cadena que mySQL le gustará:
$mysqlDateString = date('Y-m-d H:i:s', $phpdate);
o si está tratando con una fecha de cadena, puede hacer esto:
$mysqlDateString = date('Y-m-d H:i:s', $strtotime("08/09/2009"));
Si obtiene una cadena de fecha y hora de mySQL, puede hacer esto para tratarla en PHP:
$phpTime = strtotime($mysqlDateString);
Acabo de encontrarme con este problema, así que espero que esto también funcione para ti.