8

ExpressTediousを使用して Azure SQL データベースにデータを格納する Web API があります。nvarcharタイプとタイプintではうまく機能しますが、DateTime値を保存しようとするとエラーメッセージが表示されます:

Insert into Proxy (Ip, RequisitionDate) 
values ('1', '2016-05-18 3:32:21' )

エラー:

RequestError: パラメータ 'RequisitionDate' の検証に失敗しました。日付が無効です。] メッセージ: 「パラメーター \'RequisitionDate\' の検証に失敗しました。日付が無効です。'、コード: 'EPARAM' }

さて、興味深いのは、

Insert into Proxy (Ip, RequisitionDate) 
values ('1', '2016-05-18 3:32:21')

node.js APIで実行するクエリです:

var query = "Insert into Proxy (Ip,RequisitionDate) values ( '"+ ip + "', '"+ date + "' )";
console.log(query); // Insert into Proxy (Ip,RequisitionDate) values ( '1', '2016-05-18 3:32:21' )

request = new Request(query, function(err) {
    if (err) {
        console.log(err);}
    });

    request.addParameter('Ip', TYPES.NVarChar,'SQL Server Express 2014');
    request.addParameter('RequisitionDate', TYPES.DateTime , 'SQLEXPRESS2014');

    connection.execSql(request);
}

SqlManager Studio でクエリを直接実行すると、問題なく動作します。

4

3 に答える 3

8

datetime関数に正しい値を設定していないようですaddParameterAPI リファレンスによると、この関数は として使用されrequest.addParameter(name, type, value, [options])ます。

次のコードを試してください。

var query = "Insert into Proxy (Ip,RequisitionDate) values ( @ip , @date)";

request = new Request(query, function(err) {
    if (err) {
        console.log(err);}
    });

    request.addParameter('ip', TYPES.NVarChar,'<ip value>');
    request.addParameter('date', TYPES.DateTime , new Date());
// or the set the special date, refer to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
//  request.addParameter('RequisitionDate', TYPES.DateTime , new Date(2016,05,19,3,32,21))
    connection.execSql(request);
}

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2016-05-19T02:57:09.750 に答える