Solución:
Este resultado ocurre porque está utilizando el toISOString()
método y no es un formato válido para insertar en su DATETIME
columna. El formato correcto probablemente es YYYY-MM-DD HH:MM:SS
(Creo que depende de la configuración de MySQL, pero esta es la predeterminada) como señala la documentación.
Entonces deberías intentar usar el método format () de momento como este:
myDate = moment(data.myTime.format('YYYY/MM/DD HH:mm:ss')).format("YYYY-MM-DD HH:mm:ss");
De hecho, no se que data.myTime
es, pero si también es un objeto de momento, puede cambiar el primer format()
método y elimine el segundo.
La respuesta de DontVoteMeDown es correcta, excepto que los minutos 'mm'
y segundos 'ss'
debe estar en minúsculas, de lo contrario se devuelve un valor incorrecto:
myDate = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
Además, debe verificar el valor enviado por javascript antes de hacer su consulta SQL, en PHP:
DateTime::createFromFormat('Y-m-d H:i:s', $myDate);
Volverá false
si la fecha está mal formateada.
Aquí hay una extensión de función para formatearla en el formato MySQL DateTime
moment.prototype.toMySqlDateTime = function () {
return this.format('YYYY-MM-DD HH:mm:ss');
};
Podrás hacer: moment().toMySqlDateTime();