Поле года postgresql для запроса (целое число) равно году текущей даты - PullRequest
0 голосов
/ 08 декабря 2018

Кажется, это должно быть довольно просто и понятно, но я еще не нашел правильную комбинацию.У меня есть столбец с именем 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 голосов
/ 08 декабря 2018

В случае, если кто-то еще ищет, это сработало для меня:

    WHEN last_assess_yr > 0 AND format('%s-05-05'::text, w.last_assess_yr)::timestamp < 
    current_date THEN 'yes' 
    ELSE 'no' 
    END
0 голосов
/ 08 декабря 2018

На самом деле вам не нужно преобразовывать целое число в метку времени, вы можете просто сравнить извлеченный год с целым числом.

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'до отметки времени.

и: я предполагаю, что ДА и НЕТ также должны рассматриваться как литералы:' ДА 'и' НЕТ '

...