PostgreSQL查询年份(整数)字段等于当前日期的年份

时间:2018-12-08 01:50:22

标签: postgresql date extraction

这似乎应该相当简单直接,但是我还没有找到合适的组合。我有一列称为last_assess_yr的整数。我试图从my_table中查找所有行,其中'01 -01'+'year'

    SELECT last_assess_yr,
    CASE
    WHEN format('01-01-%s'::text, last_assess_yr)::timestamp without time 
    zone < current_date 
    THEN YES 
    ELSE NO 
    END AS assess_value
    FROM my__table

但是,结果不正确

2 个答案:

答案 0 :(得分:0)

您实际上不需要将整数转换为时间戳,您只需将提取的年份与整数进行比较即可。

select 
    case when last_assess_yr < extract('year' from current_date)::int 
         then 'YES' else 'NO' 
    end

但是,可以参考以下内容:

select 
    case when format('01-01-%s'::text, 2017)::timestamp < current_date 
         then 'YES' else 'NO' 
    end

即将字符串“ 01-01-2017”转换为时间戳时,您无需删除一天中的时间。

and:我认为还应将YES和NO视为文字:“ YES”和“ NO”

答案 1 :(得分:0)

万一有人在找,这对我有用:

    WHEN last_assess_yr > 0 AND format('%s-05-05'::text, w.last_assess_yr)::timestamp < 
    current_date THEN 'yes' 
    ELSE 'no' 
    END