SQL-запрос для отображения, если две даты не превышают указанную дату

Как я могу выбрать данные, которые больше, чем указанная дата (последняя запрошенная дата), и исключить их, если оба create_at И удаленные_at больше указанной даты?

Например, last_requested_date - "2017-03-09 15:41:00". Затем я хочу показать страну, которая была создана / обновлена ​​/ удалена после '2017-03-09 15:41:00'. Но я не хочу показывать страну, которая была создана и затем удалена по истечении last_requested_date (пример create_at '2017-03-09 15:41:01' и dele_at '2017-03-09 15:41:02')

Мой код похож на:

SELECT * FROM countries
WHERE (created_at > '2017-03-09 15:41:00' OR
      updated_at > '2017-03-09 15:41:00' OR
      deleted_at > '2017-03-09 15:41:00') AND
      NOT (created_at > '2017-03-09 15:41:00' AND deleted_at > '2017-03-09 15:41:00')

Но выход не был, я ожидал. Любое решение будет оценено! Спасибо

3 ответа

Решение
 SELECT * FROM countries
 WHERE (created_at > '2017-03-09 15:41:00' OR
  updated_at > '2017-03-09 15:41:00' OR
  deleted_at > '2017-03-09 15:41:00') AND id NOT IN
  (SELECT id FROM countries where created_at > '2017-03-09 15:41:00' AND deleted_at > '2017-03-09 15:41:00')

Если я правильно понял ваше требование, то ваш запрос очень близок к желаемому результату. вам может потребоваться добавить еще одно условие, чтобы проверить разницу между датой создания и датой удаления, чтобы избежать стран, которые создаются и удаляются сегодня самостоятельно.

SELECT * 
FROM countries
WHERE (created_at > '2017-03-09 15:41:00' OR
       updated_at > '2017-03-09 15:41:00' OR
       deleted_at > '2017-03-09 15:41:00'
      ) AND (created_at > '2017-03-09 15:41:00' AND 
             deleted_at > '2017-03-09 15:41:00' AND 
             DATEDIFF(created_at,deleted_at) > 0)

Проверь это.

        SELECT * FROM countries
        WHERE (created_at > '2017-03-09 15:41:00' OR
              updated_at > '2017-03-09 15:41:00' OR
              deleted_at > '2017-03-09 15:41:00') AND

        datediff(SECOND,created_at, deleted_at) > 60

Здесь мы проверяем разницу между двумя датами (create_at и delete_at), которые должны быть больше 60 секунд. Вы можете редактировать их в соответствии с требованиями.

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