SQL — для запроса записи, созданной после последнего определенного времени

#sql #postgresql

#sql #postgresql

Вопрос:

В настоящее время у меня есть база данных, в которой в created качестве метки времени указана каждая созданная запись.

Я пытаюсь запросить все данные, которые были созданы после последнего полуденного времени (12:00).

Итак, давайте скажем, что данные

 id1 | at 12.30 2nd Oct
id2 | at 21.00 2st Oct
id3 | at 12.10 1st Oct
  

И текущее время — 3 октября 11.59, я бы хотел, чтобы ответ на запрос был

 id1 | at 12.30 2nd Oct
id2 | at 21.00 2st Oct
  

Но если данные

 id1 | at 12.30 2nd Oct
id2 | at 21.00 2st Oct
id3 | at 12.10 3rd Oct
  

И текущее время — 3 октября 13.00, я бы хотел, чтобы ответ на запрос был

 id3 | at 12.10 3rd Oct
  

Каким должен быть наилучший запрос? Я запускаю БД на postgresql.

Спасибо и оценил всю помощь.

Ответ №1:

Вы можете использовать арифметику даты:

 where createdat >= (date_trunc('day', now())  
                    (case when extract(hour) from now()) >= 12 then interval '12 hour' else interval '-12 hour' end)
                   )