Получите дни недели в Postgresql

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

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

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

Ответы

Ответ 1

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

VALUES ('Sunday'), ('Monday'), ('Tuesday'), ('Wednesday'), ('Thursday'), ('Friday'), ('Saturday');

Ответ 2

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

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

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

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

Ответ 3

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

to_char(date, 'dy');

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

Ответ 4

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

select to_char((date_trunc('week',current_date)::date) + i,'Day') as wkday from generate_series(0,6) i

Ответ 5

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

select day_of_week
from unnest(
array
  ['Sunday',
    'Monday',
    'Tuesday',
    'Wednesday',
    'Thursday',
    'Friday',
   'Saturday']
) as day_of_week

Ответ 6

Вы также можете использовать эти параметры в зависимости от своих потребностей.

сокращенное название дня в верхнем регистре (3 буквы на английском языке, длина может быть разной)

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'DY')

сокращенное название дня с заглавной буквы (3 буквы на английском языке, длина может быть разной)

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'Dy')

сокращенное название дня в нижнем регистре (3 буквы на английском языке, длина может быть разной)

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'dy')

полное название дня в нижнем регистре (с пробелами до 9 символов)

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'day')

полное заглавное название дня (с пробелами до 9 символов)

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'Day')

полное название дня в верхнем регистре (с пробелами до 9 символов)

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'DAY')

Ссылка ссылка