如何在MySQL中插入时刻JS时间

2022-08-30 10:50:26
//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)...

这是我插入后遇到的错误,请注意Mysql中的列是“datetime”类型。

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


答案 1

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

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

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

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


答案 2

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

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

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

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

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