Ошибка красного смещения при добавлении даты к отметке времени с использованием оператора регистра - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь создать оператор CASE, который добавляет дни к столбцу отметки времени.

select cust_id, 
case when type = 'a' then (created_date - INTERVAL '7 DAY')
when type = 'b' then (created_date - INTERVAL '10 DAY') 
else 0 end as date_when_breach 
from table

Приведенное выше сообщение выдает ошибку

Reason:
SQL Error [42804]: ERROR: CASE types integer and timestamp without time zone cannot be matched

Пример значения созданного_дата 2019-02-14 11:16:16

1 Ответ

1 голос
/ 05 июля 2019

Ваш оператор CASE не соответствует типам возврата - первые две ветви возвращают DATE, а ELSE возвращает INTEGER.Измените ELSE на возвращение DATE (например, current_date, зависит от того, чего вы хотите достичь) или NULL (или просто удалите его, что будет иметь тот же эффект).

select 
  cust_id, 
  case 
     when type = 'a' then (created_date - INTERVAL '7 DAY')
     when type = 'b' then (created_date - INTERVAL '10 DAY') 
     else NULL 
  end as date_when_breach 
from table
...