从node.js查询MSSQL时使用日期

时间:2019-07-03 10:57:01

标签: javascript node.js sql-server

我正在尝试从node.js查询MSSQL,并且查询涉及日期。

我这样设置查询日期:

var datoen = new Date();
datoen.setHours(2,0,0,0);

首先-在我的服务器上,注销为: 2019-07-03T00:00:00.000Z

为什么它不注销为:2019-07-03T02:00:00.000Z?

无论如何-这不是真正的问题。这是我想要的第一个日期格式,它与数据库中的格式相同。

但是当我运行此查询(使用npm中的mssql)时:

request.query('select * from tblPriceRooms where 
BarDate = ' + datoen, function (err, recordset) {
        if (err) console.log(err)
        res.send(recordset)

...服务器提供此错误->

     info:
  { number: 102,
    state: 1,
    class: 15,
    message: 'Incorrect syntax near \'Jul\'.',
    serverName: 'SERVERNAME\\SQLEXPRESS',
    procName: '',
    lineNumber: 1,
    name: 'ERROR',
    event: 'errorMessage' } },
    name: 'RequestError',
    precedingErrors: [] }

我知道连接正常。只要我不尝试根据日期查询-我就会获得世界上所有的结果。

我是新手,约会有时会引起我的注意。任何指针将不胜感激!

1 个答案:

答案 0 :(得分:1)

我建议对查询使用参数,这种方法会带来很多好处。这应该为您工作:

// Put whatever date you wish here..
const date = new Date();
date.setUTCHours(2, 0, 0, 0);
request.query('select * from tblPriceRooms where BarDate > @date', (err, result) => {
    if (err) {
        console.error("Error occurred: ", err);
    } else {
        console.info("Rows: ", result);
    }
}).input('date', sql.DateTime, date); // Add the date parameter here