How to insert moment JS time into MySQL
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.
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.
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();