Получите дни недели в Postgresql - PullRequest
17 голосов
/ 25 февраля 2012

Я пытался выяснить запрос на выборку для отображения дней недели, таких как понедельник, вторник, среда и т. Д. В итоге у меня был запрос на выборку, отображающий даты недели,

select ((date_trunc('week',current_date)::date) + (i+6)) as week_date 
  from generate_Series(0,6) i;

Isесть способ получить результат как понедельник, вторник и т. д.

Ответы [ 5 ]

46 голосов
/ 25 февраля 2012

Просто используйте extract :

extract(dow from date_column::timestamp)
from whatever_table;

Возвращает 0 для воскресенья, 1 для понедельника, ..., 6 для субботы.

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

44 голосов
/ 05 декабря 2014

В Postgres 9 и далее есть:

to_char(date, 'dy');

, который будет возвращать вашу дату в день недели в виде текстового значения

6 голосов
/ 25 февраля 2012

Вы можете сделать только:

VALUES ('Sunday'), ('Monday'), ('Tuesday'), ('Wednesday'), ('Thursday'), ('Friday'), ('Saturday');
2 голосов
/ 03 марта 2012

Следующий запрос также работает

select to_char((date_trunc('week',current_date)::date) + i,'Day') as wkday from generate_series(0,6) i
1 голос
/ 22 января 2019

создает массив из одного поля, которое вы удаляете

select day_of_week
from unnest(
array
  ['Sunday',
    'Monday',
    'Tuesday',
    'Wednesday',
    'Thursday',
    'Friday',
   'Saturday']
) as day_of_week
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...