//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:第1行的列'_dateColumn‘的日期时间值不正确:'2014-09- 24T04:09:00.000Z’代码:'ER_TRUNCATED_WRONG_VALUE',
发布于 2014-09-26 04:51:11
出现此结果的原因是,您正在使用toISOString()
方法,而该方法不是可插入到DATETIME
列中的有效格式。正如docs指出的那样,正确的格式可能是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");
事实上,我不知道data.myTime
是什么,但是如果它也是一个moment对象,你可以改变第一个format()
方法并删除第二个方法。
发布于 2014-12-09 22:42:59
DontVoteMeDown answer是对的,除了分钟'mm'
和秒'ss'
需要小写,否则会返回错误的值:
myDate = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
此外,在PHP中执行SQL查询之前,您应该检查javascript发送的值:
DateTime::createFromFormat('Y-m-d H:i:s', $myDate);
如果日期格式错误,将返回false
。
发布于 2018-09-06 17:58:55
下面是一个函数扩展,用于将其格式化为MySQL DateTime格式
moment.prototype.toMySqlDateTime = function () {
return this.format('YYYY-MM-DD HH:mm:ss');
};
你将能够做到:moment().toMySqlDateTime();
https://stackoverflow.com/questions/26047755
复制相似问题