Ответ 1
Вы можете сделать только:
VALUES ('Sunday'), ('Monday'), ('Tuesday'), ('Wednesday'), ('Thursday'), ('Friday'), ('Saturday');
Был попыток выяснить выбор запроса для отображения дней недели, таких как понедельник, вторник, среда и т.д. В итоге у меня появился запрос выбора, показывающий даты недели,
select ((date_trunc('week',current_date)::date) + (i+6)) as week_date
from generate_Series(0,6) i;
Есть ли способ получить результат в понедельник, вторник и т.д.
Вы можете сделать только:
VALUES ('Sunday'), ('Monday'), ('Tuesday'), ('Wednesday'), ('Thursday'), ('Friday'), ('Saturday');
Просто используйте extract:
extract(dow from date_column::timestamp)
from whatever_table;
Это возвращает 0 для воскресенья, 1 для понедельника,..., 6 для субботы.
Изменить: Или, поскольку вам, очевидно, не нужно ничего, что на самом деле требует захвата дня недели с определенной даты, и вам просто нужен один столбец с фиксированными строковыми значениями, представляющими имена дни недели, просто создайте таблицу...
В Postgres 9 и далее есть:
to_char(date, 'dy');
который вернет вашу дату в день недели в виде текстового значения
Следующий запрос также работает
select to_char((date_trunc('week',current_date)::date) + i,'Day') as wkday from generate_series(0,6) i
создает массив из одного поля, которое вы удаляете
select day_of_week
from unnest(
array
['Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday']
) as day_of_week
Вы также можете использовать эти параметры в зависимости от своих потребностей.
сокращенное название дня в верхнем регистре (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')
Ссылка ссылка