У меня есть таблица в базе данных 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 mssql для запроса этой таблицы с параметрами 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
Почемучто происходит и как мне разобрать строку из ответа, чтобы мой запрос работал?