Я хочу выбрать строки в соответствии с месяцем столбца date или timestamp следующим образом:
SELECT id, name, birthday
FROM employee.person
WHERE Month(birthday) > 10;
Но я получаю сообщения об ошибках в PostgreSQL.
Как это можно сделать?
Ответ 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'.