Postgresql 如何从日期字段中获取年份

Postgresql 如何从日期字段中获取年份,postgresql,Postgresql,如何从日期字段中获取年份,如果我有一个日期字段product\u date,它每年有1000个条目,我希望记录年份。product_date=2013/01/01,就像我想要搜索2013一样 SELECT EXTRACT(YEAR FROM product_date ) FROM tbl_product; 根据年份对表格进行排序 with cte as( SELECT EXTRACT(YEAR FROM product_date) as myYear FROM tbl_product or

如何从日期字段中获取年份,如果我有一个日期字段
product\u date
,它每年有1000个条目,我希望记录年份。product_date=2013/01/01,就像我想要搜索2013一样

SELECT EXTRACT(YEAR FROM product_date ) FROM tbl_product;
根据
年份对表格进行排序

 with cte as(
 SELECT EXTRACT(YEAR FROM product_date) as myYear FROM tbl_product order by myYear
 )
 select product_date,* from tbl_product where  extract(year from product_date) in (select myYear    
 from cte)
根据
年份对表格进行排序

 with cte as(
 SELECT EXTRACT(YEAR FROM product_date) as myYear FROM tbl_product order by myYear
 )
 select product_date,* from tbl_product where  extract(year from product_date) in (select myYear    
 from cte)
我不确定“年份记录”应该是什么意思,因为您未能提供一些示例数据,但要从日期列中获取年份,可以使用
extract()
函数:

select *
from some_table
where extract(year from product_date) = 2013;
有关提取功能的详细信息,请参阅手册:

但是,上述内容不会使用
产品日期
列上的索引。因此,如果性能非常重要,您有两个选择:

  • extract上创建索引(从产品日期算起的年份)
  • 使用between子句:

    select *
    from some_table
    where product_date between date '2013-01-01' and date '2013-12-31';
    
我不确定“年度记录”是什么意思,因为您未能提供一些示例数据,但要从日期列中获取年份,可以使用
extract()
函数:

select *
from some_table
where extract(year from product_date) = 2013;
有关提取功能的详细信息,请参阅手册:

但是,上述内容不会使用
产品日期
列上的索引。因此,如果性能非常重要,您有两个选择:

  • extract上创建索引(从产品日期算起的年份)
  • 使用between子句:

    select *
    from some_table
    where product_date between date '2013-01-01' and date '2013-12-31';