7

Datetime フィールドに Date For insert を保存したいのですが、問題はありません...何度も試みましたが、これが最後ですが、結果は同じです

入れる:

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;
    }

テーブルの更新:

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;
    }

そして、私はこのエラーを受け取ります:

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
4

4 に答える 4

17

@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) {
于 2013-08-02T17:57:44.097 に答える
15

NOW()現在のタイムスタンプを使用しているため、javascript から日付を入力する代わりに、MySQL 関数を使用することを検討してください。もちろん、これは、クライアントの時間ではなく、MySQL サーバー時間のすべてのタイムスタンプを標準化することを意味します。これは、望ましい場合と望ましくない場合があります。

使用法は次のようになります。

'UPDATE prof_voto_foto SET punteggio = ' + data.voto + ', created = NOW() WHERE profilo_id = ' + profilo + ' AND foto_id = ' + data.id_foto_votata
于 2013-08-02T18:01:44.943 に答える
5

日付は で囲む必要があるため"'mysql は文字列を処理していることを認識し、それを日時に変換できます。

UPDATE prof_voto_foto SET punteggio = ' + data.voto + ', created = "' + then +'" WHERE profilo_id = ' + profilo + ' AND foto_id = ' + data.id_foto_votata

また、mysql が期待するものと一致するようにフォーマットする必要がある場合があり、次のようAug 02 2013 19:03:13 GMT+0200 (CEST)に変換する必要があります。'YYYY-MM-DD HH:MM:SS'

于 2013-08-02T17:48:30.333 に答える
0
var o_voto_foto = {
    profilo_id: profilo,
    foto_id: data.id_foto_votata,
    punteggio: data.voto,
    proprietario_id: data.proprietario_foto,
    // just delete the stuff you add here :) then add created = now() on the sql statement. that should do the trick
};


connection.query('INSERT INTO prof_voto_foto SET **created = now(),** ?', o_voto_foto, function(error, rows) {
    if (error) {
        var err = "Error on INSERT 'votoFotoFancybox': " + error;
        console.error(err);
        throw err;
    }

更新時に同じことを行い、

于 2015-07-22T15:35:18.810 に答える