#sql #postgresql #weekday
#sql #postgresql #день недели
Вопрос:
Я новичок в SQL, и мне просто интересно, как получить предыдущий день недели в PostgreSQL. У меня есть select (current_date — 1), чтобы получить вчерашнюю дату, но мне это нужно, чтобы исключить выходные. Так, например, если сегодня понедельник, я бы ожидал, что этот запрос получит дату пятницы.
Ответ №1:
Это не модно, но это то, что я использую:
select case extract('dow' from current_date)
when 0 then current_date - 2
when 1 then current_date - 3
else current_date - 1
end;
┌────────────┐
│ case │
├────────────┤
│ 2020-09-21 │
└────────────┘
(1 row)
Ответ №2:
Вы можете использовать TO_CHAR()
функцию с сокращением дня в условном операторе :
SELECT CASE WHEN TO_CHAR(current_date-1, 'dy') = 'sun' THEN
current_date-3
WHEN TO_CHAR(current_date-1, 'dy') = 'sat' THEN
current_date-2
ELSE
current_date-1
END
FROM tab