node往mysql中插入datetime类型数据

2,756

让你明明白白学知识,有代码,有讲解,抄的走,学的会!

在我们往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}")`