这似乎应该相当简单直接,但是我还没有找到合适的组合。我有一列称为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
答案 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