如何根据日期在SQL中获取特定月份的记录

问题描述:

我正在使用Postgres 9.1并尝试从知道给定月份的表中获取记录,并且应该知道日期类型日期字段是否包含月份。如何根据日期在SQL中获取特定月份的记录

这是我的查询:

SELECT consejo.numero,consejo.fecha FROM consejo WHERE MONTH(consejo.fecha) = 2 

,但我得到了以下错误:

ERROR: There is no month function (date)
LINE 1: ... T consejo.numero, consejo.fecha council FROM WHERE MONTH (cons ...

HINT: No function matches the name and types of arguments. You may need to add explicit type conversion.

可能是错的?

+1

你应该比较使用' BETWEEN'或'>'使您的查询[SARGable](http://stackoverflow.com/questions/799584/what-makes-a-sql-statement-sargable) – lad2025

+1

Ar你确定你想过滤一个月,而不是年和月? –

+0

手册中的哪个位置可以找到'month()'函数? –

在Postgresql中没有MONTH函数可用。您可以使用EXTRACT代替:

WHERE EXTRACT(MONTH FROM consejo.fecha) = 2 

另一种选择是使用PostgreSQL的date_part数()函数:

WHERE date_part('month', consejo.fecha) = 2 

看看参考指南:

http://www.postgresql.org/docs/9.5/static/functions-datetime.html