Невозможно запросить таблицу MSSQL по столбцу datetime с помощью nodejs-mssql - PullRequest
1 голос
/ 21 мая 2019

У меня есть таблица в базе данных 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

Почемучто происходит и как мне разобрать строку из ответа, чтобы мой запрос работал?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...