Подтвердить что ты не робот

Выбор по месяцам в PostgreSQL

Я хочу выбрать строки в соответствии с месяцем столбца date или timestamp следующим образом:

SELECT id, name, birthday 
FROM employee.person 
WHERE Month(birthday) > 10;

Но я получаю сообщения об ошибках в PostgreSQL.
Как это можно сделать?

4b9b3361

Ответ 1

Вы можете использовать функцию EXTRACT, например:

SELECT id, name, birthday FROM employee.person 
WHERE EXTRACT(MONTH FROM birthday) > 10;

Ваша проблема связана с тем, что в PostgreSQL нет функции Month. Проверьте онлайн-документацию здесь, чтобы узнать, что вы можете получить вместо этого. EXTRACT должно быть достаточно.

Ответ 2

Я публикую это, так как я видел недавний комментарий об этом в другом ответе.

У меня была проблема, аналогичная OP, но тип столбца был text. Если столбец не относится к типу date, вы получите следующую ошибку:

Ни одна функция не соответствует заданному имени и типу аргумента. Вам может понадобиться добавить явные приведения типов

Для того чтобы это работало, вам нужно сначала преобразовать с помощью to_date(). К счастью, это можно сделать одной строкой:

SELECT * FROM my_table
WHERE EXTRACT(MONTH FROM to_date(text_date, 'YYYY-MM-DD')) > 10;

Вам просто нужно убедиться, что ваш text_date соответствует формату 'YYYY-MM-DD'.