使用nodejs保存DateTime mysql

Bar*_*rno 5 javascript mysql node.js

我想在我的Datetime字段中保存日期对于插入我没有问题...我尝试了很多次尝试,这是最后一次但是结果是一样的

插入:

var now = new Date();
var jsonDate = now.toJSON();
var then = new Date(jsonDate);


var o_voto_foto = {
    profilo_id: profilo,
    foto_id: data.id_foto_votata,
    punteggio: data.voto,
    proprietario_id: data.proprietario_foto,
    created: then
};


connection.query('INSERT INTO prof_voto_foto SET ?', o_voto_foto, function(error, rows) {
    if (error) {
        var err = "Error on INSERT 'votoFotoFancybox': " + error;
        console.error(err);
        throw err;
    }
Run Code Online (Sandbox Code Playgroud)

更新表:

var now = new Date();
var jsonDate = now.toJSON();
var then = new Date(jsonDate);

connection.query('UPDATE prof_voto_foto SET punteggio = ' + data.voto + ', created = ' + then +' WHERE profilo_id = ' + profilo + ' AND foto_id = ' + data.id_foto_votata, function(error, rows) {
    if (error) {
        var err = "Error on UPDATE 'votoFotoFancybox': " + error;
        console.error(err);
        throw err;
    }
Run Code Online (Sandbox Code Playgroud)

我发现了这个错误:

Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Aug 02 2013 19:03:13 GMT+0200 (CEST) WHERE profilo_id = 103 AND foto_id = 5' at line 1
Run Code Online (Sandbox Code Playgroud)

Bar*_*rno 13

在@tadman的帮助下,它是有效的

created = new Date();
connection.query('UPDATE prof_voto_foto SET punteggio = ' + connection.escape(data.voto) + ', created = ' + connection.escape(created) + ' WHERE profilo_id = ' + connection.escape(profilo) + ' AND foto_id = ' + connection.escape(data.id_foto_votata), function(error, rows) {
Run Code Online (Sandbox Code Playgroud)


Mik*_*ant 12

由于您正在使用当前时间戳,您可以考虑使用NOW()MySQL函数而不是从javascript填充日期.当然,这意味着您将标准化MySQL服务器时间的所有时间戳,而不是客户端的时间,这可能是也可能不是.

用法如下:

UPDATE prof_voto_foto SET punteggio = ' + data.voto + ', created = NOW() WHERE profilo_id = ' + profilo + ' AND foto_id = ' + data.id_foto_votata
Run Code Online (Sandbox Code Playgroud)


mia*_*iah 5

该日期必须包含在其中,"否则'mysql知道它正在处理字符串,可以将其转换为日期时间。

UPDATE prof_voto_foto SET punteggio = ' + data.voto + ', created = "' + then +'" WHERE profilo_id = ' + profilo + ' AND foto_id = ' + data.id_foto_votata
Run Code Online (Sandbox Code Playgroud)

并且可能需要将其格式化以匹配mysql的预期,Aug 02 2013 19:03:13 GMT+0200 (CEST)需要将其转换为'YYYY-MM-DD HH:MM:SS'