Что этот фильтр даты выполняет в этом SQL-запросе?

#sql #mariadb

#sql #mariadb

Вопрос:

Я просматриваю длинный запрос для работы и пытаюсь определить, что делает этот фильтр по дате. Я обычно понимаю, что он просматривает данные за 29 часов, но мне особенно интересно, какие временные интервалы имеют значение «H: 00». Что делает часть запроса? В чем разница между этим и добавлением чего-то вроде «‘%Y-%m-% d%H:%m:%s’?

 AND (s.start_date >= DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d %H:00'),INTERVAL -29 HOUR)

AND s.start_date < DATE_ADD(DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d %H:00'),INTERVAL -29 HOUR),INTERVAL 30 HOUR))
  

(Я использую SQL Pro, Mariadb)

Комментарии:

1. %H это просто двухзначный часовой формат . Вы можете просто запустить эту часть запроса, выполнив: SELECT DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d %H:00'),INTERVAL -29 HOUR) чтобы увидеть результат.

2. Но что делает часть «00»? У меня есть тысячи результатов, все в указанном выше формате даты, но время для каждого результата равно полуночи. Вот так…»2020-01-01 00:00:00″. Итак, я пытаюсь определить, что делает «00». Создает ли он метку времени в полночь для каждого результата? Или он говорит: «возьмите двузначный час now () и вычтите 29 часов из этого часа»?