Javascript 无法使用nodejs MSSQL按日期时间列查询MSSQL表

Javascript 无法使用nodejs MSSQL按日期时间列查询MSSQL表,javascript,node.js,sql-server,datetime,Javascript,Node.js,Sql Server,Datetime,我在MSSQL数据库中有一个表: CREATE TABLE Test ( ID int NOT NULL IDENTITY(1,1), UserID int NULL, Starttime datetime NULL ); ALTER TABLE Test ADD CONSTRAINT PK_Test PRIMARY KEY (ID); INSERT INTO Test (UserID, Starttime) VALUES (1, '2019-01-01 01:01:0

我在MSSQL数据库中有一个表:

CREATE TABLE Test (
    ID int NOT NULL IDENTITY(1,1),
    UserID int NULL,
    Starttime datetime NULL
);
ALTER TABLE Test ADD CONSTRAINT PK_Test PRIMARY KEY (ID);

INSERT INTO Test (UserID, Starttime) VALUES (1, '2019-01-01 01:01:01.000');
我正试图使用NodeJS包查询带有
UserID
Starttime
参数的表,这些参数是我从远程位置获取的

从远程位置响应的
UserID
参数是一个整数,
Starttime
是一个编码的URI字符串-
2019-01-01T01%3A01%3A01

如果我使用硬编码的
Starttime
值查询表,一切正常,但当我尝试从远程响应使用
Starttime
并使用
decodeURIComponent()
对其进行解码时,我的查询响应为0结果:

const userID = response.user_id;  // userID -> 1
const dateFromResponse = response.start_time;  // dateFromResponse -> '2019-01-01T01%3A01%3A01'
const start1 = new Date('2019-01-01T01:01:01');
const start2 = new Date(decodeURIComponent(dateFromResponse));
// (decodeURIComponent(dateFromResponse) === '2019-01-01T01:01:01') ---> true
// (start1.valueOf() === start2.valueOf()) ---> true
// (start1.toISOString() === start2.toISOString()) ---> true

const test = await mssqlRequest
  .input('UserID', sql.Int, userID)
  .input('Starttime', sql.DateTime2, start1)
  .query('SELECT * FROM Test WHERE UserID = @UserID AND Starttime = @Starttime');
const l = test.recordset.length;  // results in 1


const test2 = await mssqlRequest
  .input('UserID', sql.Int, userID)
  .input('Starttime', sql.DateTime2, start2)
  .query('SELECT * FROM Test WHERE UserID = @UserID AND Starttime = @Starttime');
const l2 = test2.recordset.length;  // results in 0

为什么会发生这种情况?我应该如何解析响应中的字符串以使查询正常工作?

您可以尝试运行相同的操作,然后在
输入(…
)中切换
start1
start2
?所以
start2
首先运行是的,我试过了,结果完全一样,如果我按预期使用
start1
查询结果,
start2
不会。你能试着运行相同的,只需在
输入(…
)中切换
start1
start2
?所以
start2
首先运行是的,我试过了,结果完全一样,如果我按预期使用
start1
查询结果,
start2
不会。