让你明明白白学知识,有代码,有讲解,抄的走,学的会!
在我们往mysql中插入数据类型是 datetime类型的数据时,我们可能会遇到下面的错误提示 数据插入失败,语法错误
You have an error in your SQL syntax; check the manual that corresponds to your
上代码
const mysql = require('mysql')
// 连接数据库
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'liuyan'
})
app.post('/say', (req, res)=> {
let {content} = req.body
if(!content) {
res.json({
code: -1,
msg: '内容不能为空'
})
return
}
// 第一种写法: 这里的time其实是一个日期对象,并不是字符串
let time = new Date()
// 第二种尝试
// let time = new Date().toString() // "Fri May 15 2020 11:45:02 GMT+0800 (中国标准时间)"
// 这里是插入语句
let insertSql = `insert into content_tb (content , createtime ) values ("${content}", "${time}")`
console.log(insertSql)
connection.query(insertSql, (err, data)=> {
if(err) {
res.status(500)
res.json({
code: -1,
msg: err
})
return
}
res.json({
code: 0,
msg: '插入成功'
})
})
})
我们打开浏览器, F12控制台
Object.prototype.toString.call(new Date()) // 返回 "[object Date]"
typeof (new Date()) // "object"
所以,都不符合我们数据库中 DATETIME类型的要求
在Mysql中 DATETIME 类型字段,要求格式是 "YYYY-MM-DD HH:MM:SS"
我们直接使用moment包,进行格式化一下
const moment = require('moment')
// 将上面的time改为下面这种,即可
let time = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
let insertSql = `insert into content_tb (content , createtime ) values ("${content}", "${time}")`