2017-02-13 8 views
0

Мне нужно выбрать записи, измененные за последние 15 минут, будет ли это работать?Выберите измененные записи за последние 15 минут дату и время в двух столбцах

--Select changed records 
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 >= getdate() 
    --Also need to check for time 
    AND REVISION_TIME >= dateadd(minute,-15,getdate()) --Test record 
ORDER BY 
    REVISION_DATE DESC, REVISION_TIME DESC 
+0

Почему бы 15 минут назад всегда текущая дата (или более поздняя версия)? Если вы проверяете 5 минут за полночь, вы будете разочарованы. – HABO

+1

Каков тип данных 'REVISION_DATE' и' REVISION_TIME'? – Lamak

+0

@HABO Я думаю, что 'REVISION_DATE' может быть просто' DATE'. Это все еще неправильно, так как это будет, если запрос выполняется в '00: 04: 00.00' например – Lamak

ответ

0

Я думаю, что вы были там, просто нужно совместить значения столбцов даты и времени. Вы можете сделать это с помощью неявного или явного метода. Преимущество неявного заключается в том, что его быстро и легко писать. Преимущество явного варианта состоит в том, что если столбец 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 

 Смежные вопросы

  • Нет связанных вопросов^_^