如何将时间JS时间插入MySQL

use*_*412 31 javascript php mysql node.js momentjs

//In Node/JS
myDate = moment(data.myTime.format('YYYY/MM/DD HH:MM:SS')).toISOString();
//myDate shows '2014-09-24T04:09:00.000Z'

Insert INTO (dateColumn..) Values(myDate)...
Run Code Online (Sandbox Code Playgroud)

这是插入后得到的错误,Mysql中的note列是"datetime"类型.

MySQL Error :: {[错误:ER_TRUNCATED_WRONG_VALUE:不正确的日期时间值:'2014-09-24T04:09:00.000Z'用于第1行的'_dateColumn'列代码:'ER_TRUNCATED_WRONG_VALUE',

Don*_*own 56

出现此结果是因为您正在使用该toISOString()方法,并且它不是插入DATETIME列中的有效格式.正确的格式可能YYYY-MM-DD HH:MM:SS(我认为这取决于MySQL配置,但这是默认设置),正如文档所指出的那样.

所以你应该尝试使用moment的format()方法,如下所示:

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

事实上,我不知道是什么data.myTime,但如果它也是一个时刻对象,你可以改变第一个format()方法并删除第二个方法.

  • `YYYY-MM-DD HH:MM:SS`应该是'YYYY-MM-DD HH:mm:ss` (5认同)

小智 26

DontVoteMeDown答案是正确的,除了分钟'mm'和秒'ss'需要小写,否则返回错误的值:

myDate =  moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)

此外,您应该在PHP之前检查javascript发送的值以进行SQL查询:

DateTime::createFromFormat('Y-m-d H:i:s', $myDate);
Run Code Online (Sandbox Code Playgroud)

false如果日期格式错误,将返回.


Yan*_*ani 8

这是将其格式化为 MySQL DateTime 格式的函数扩展

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

你将能够做到: moment().toMySqlDateTime();


小智 5

(我正在使用 Node.js、Express 和 MySql,这对我有用:)

var momentDate=new moment('2018-08-31T20:13:00.000Z');
var readyToInsert=momentDate.format("YYYY-MM-DD HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)