2017-01-27 11 views
0

Im использованием Postgres, и я хотел бы получить дни недели числа следующим образом:Как я могу настроить смещение в моем запросе с использованием экстракта (доу с даты), так что понедельник является 0 - Postgres

(Monday: 0, Tuesday: 1 ,... Sunday:6) 

Но используя следующий SQL в функции Postgres

extract(dow from current_date) 

Postgres дает мне следующее назад:

(Sunday: 0, Monday: 1 ,... Saturday:6) 

Как я могу скорректировать смещение в моем запросе с помощью extract (dow from date), чтобы в понедельник было 0, а не в воскресенье?

И интересно, почему следующие функции Postgres:

date_trunc('week',(current_date) 

Использует логику, отличную от экстракта Дау.

(Monday: 0 -> Week Start, Tuesday: 1 ,... Sunday:6 -> Week End) 

ответ

3

Использование isodow вместо dow

Quote from the manual

isodow
            День недели в понедельник (1) в воскресенье (7)

Тогда просто вычесть 1 из результата:

extract(isodow from current_date) - 1 
+0

приятно! Спасибо!! – Hangon

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