How to insert moment JS time into MySQL How to insert moment JS time into MySQL javascript javascript

How to insert moment JS time into MySQL


This result happens because you are using the toISOString() method and it is not a valid format to insert into your DATETIME column. The correct format probably is YYYY-MM-DD HH:MM:SS(I think it depends on MySQL configuration, but this is the default) as the docs points out.

So you should try using moment's format() method like this:

myDate =  moment(data.myTime.format('YYYY/MM/DD HH:mm:ss')).format("YYYY-MM-DD HH:mm:ss");

In fact, I don't know what data.myTime is, but if its a moment object too, you can change the first format() method and remove the second one.


DontVoteMeDown answer is right, except that the minutes 'mm' and seconds 'ss' need to be in lowercase, otherwise a wrong value is returned:

myDate =  moment(new Date()).format("YYYY-MM-DD HH:mm:ss");

Also, you should check the value sent by javascript before to do your SQL query, in PHP:

DateTime::createFromFormat('Y-m-d H:i:s', $myDate);

Will return false if the date is misformatted.


Here's a function extension to format it into the MySQL DateTime format

moment.prototype.toMySqlDateTime = function () {    return this.format('YYYY-MM-DD HH:mm:ss');};

You'll be able to do: moment().toMySqlDateTime();