Javascript 无法使用nodejs MSSQL按日期时间列查询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
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
不会。