SQL - вычитание миллисекунд из текущей даты и времени

Я пытаюсь написать запрос, который позволит мне получать записи, введенные между настоящим моментом и некоторым количеством минут в прошлом. У меня количество минут в миллисекундах. Итак, я пытаюсь написать SQL-запрос, который позволит мне получить эти записи.

Я вижу функцию DateAdd. Однако я не вижу функции вычитания времени из даты. С точки зрения псевдокода я пытаюсь сделать это:

SELECT
  *
FROM
  MyTable
WHERE
  CreatedAt > (GetUtcDate() - milliseconds)

Как мне получить записи из MyTable, которые произошли в течение некоторого прошлого промежутка времени?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
2 894
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Мы можем попробовать использовать DATEADD в миллисекундном режиме:

SELECT *
FROM MyTable
WHERE CreatedAt > DATEADD(ms, -60000, GETDATE());  -- 60000 ms = 1 minute

Это вернет все записи, которые были созданы в пределах одной минуты от текущей даты и времени.

Вам нужна функция 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. Во втором параметре, если вы хотите добавить время, введите положительное число. Если вы хотите вычесть время, как здесь, введите отрицательное число единиц.

Другие вопросы по теме