#sql #sql-server #datetime #comparison
Вопрос:
У меня есть система, которая планирует события в определенное время (plannedTime), когда эти события разыгрываются, одна и та же таблица обновляется строкой (playedTime), обе имеют тип datetime, поэтому сравнение должно быть довольно простым. Выполнение этого в приложении не было бы проблемой, но есть ли простой способ выбрать события, время воспроизведения которых составляет 10 минут от запланированного времени в одном запросе?
Я пытался:
SELECT * FROM eventlist
where playedTime LIKE plannedTime
Однако это просто даст мне события, которые разыгрываются в то же самое время, когда они были запланированы, а их немного, если вообще есть.
Моя идея состоит в том, чтобы создать промежуток времени между воспроизведенным и запланированным временем, и если это не превышает 10 минут, включите его в результат, но я не знаю, с чего начать в SQL — запросе.
Ответ №1:
Я думаю, вам нужны сравнения во времени:
SELECT el.*
FROM eventlist el
WHERE el.playedTime <= DATEADD(minute, 10, plannedTime) AND
el.playedTime >= DATEADD(minute, -10, plannedTime);
Примечание: Это интерпретирует «в течение 10 минут» как » до » или «после».
Комментарии:
1. Фантастика, это именно то, что я искал, спасибо, Гордон!