Я пытаюсь написать запрос, который позволит мне получать записи, введенные между настоящим моментом и некоторым количеством минут в прошлом. У меня количество минут в миллисекундах. Итак, я пытаюсь написать SQL-запрос, который позволит мне получить эти записи.
Я вижу функцию DateAdd. Однако я не вижу функции вычитания времени из даты. С точки зрения псевдокода я пытаюсь сделать это:
SELECT
*
FROM
MyTable
WHERE
CreatedAt > (GetUtcDate() - milliseconds)
Как мне получить записи из MyTable, которые произошли в течение некоторого прошлого промежутка времени?


Вам нужна функция DATEADD (Transact-SQL).
SELECT {YourColumns}
FROM MyTable MT
WHERE CreatedAt > DATEADD(millisecond,{value},GETUTCDATE());
Лучший способ взаимодействия с датой и временем в SQL - использовать определенные функции даты и времени, а не добавлять даты, как если бы вы добавляли числа.
В этом случае функция, которую вы ищете, - ДАТА ДОБАВИТЬ, при ее использовании ваш шнур должен измениться следующим образом:
SELECT *
FROM MyTable
WHERE CreatedAt > DATEADD(ms, -milliseconds, GetUtcDate())
Несмотря на свое название, функция DATEADD также является функцией «ВЫЧИСЛЕНИЕ ДАТЫ», которую вы ищете. (Умышленно взяты в двойные кавычки как квазикод.)
Первый параметр определяет типы единиц, которые вы добавляете или вычитаете, то есть HOUR, DAY, WEEK и т. д. Или, в вашем случае, MILLISECOND. Во втором параметре, если вы хотите добавить время, введите положительное число. Если вы хотите вычесть время, как здесь, введите отрицательное число единиц.