Я думаю, что вы были там, просто нужно совместить значения столбцов даты и времени. Вы можете сделать это с помощью неявного или явного метода. Преимущество неявного заключается в том, что его быстро и легко писать. Преимущество явного варианта состоит в том, что если столбец REVISION_DATE
должен был иметь временную часть, заполненную чем-то отличным от 00:00:00.000
, или имеют часть даты, заполненную чем-то отличным от 1900-01-01
, она по-прежнему будет работать, как ожидалось.
неявный:
USE PC
SELECT
PEOPLE_CODE, PEOPLE_ID, PEOPLE_CODE_ID, PREVIOUS_ID,
FIRST_NAME, MIDDLE_NAME, LAST_NAME, REVISION_DATE, REVISION_TIME
FROM
PEOPLE
WHERE
(REVISION_DATE + REVISION_TIME) >= dateadd(minute,-15,getdate())
ORDER BY
REVISION_DATE DESC, REVISION_TIME DESC
Явные:
USE PC
SELECT
PEOPLE_CODE, PEOPLE_ID, PEOPLE_CODE_ID, PREVIOUS_ID,
FIRST_NAME, MIDDLE_NAME, LAST_NAME, REVISION_DATE, REVISION_TIME
FROM
PEOPLE
WHERE
(dateadd(d, datediff(d, 0, REVISION_DATE), 0) + dateadd(d, -datediff(d, 0, REVISION_TIME), REVISION_TIME)) >= dateadd(minute,-15,getdate())
ORDER BY
REVISION_DATE DESC, REVISION_TIME DESC
Почему бы 15 минут назад всегда текущая дата (или более поздняя версия)? Если вы проверяете 5 минут за полночь, вы будете разочарованы. – HABO
Каков тип данных 'REVISION_DATE' и' REVISION_TIME'? – Lamak
@HABO Я думаю, что 'REVISION_DATE' может быть просто' DATE'. Это все еще неправильно, так как это будет, если запрос выполняется в '00: 04: 00.00' например – Lamak