Обычно вы хотите указать год, когда говорите о месяце. Поэтому я бы порекомендовал:
select distinct a.name
from artist a join
artist_event ae
on a.id = ae.artist_id join
event e
on e.id = ae.event_id
where e.start_time >= '2019-12-01' and
e.start_time < '2020-01-01';
Ваша версия не будет работать, потому что 'December'
- строка (название месяца). date_trunc()
возвращает дату (которая не является строкой).
Тем не менее, я рекомендую exists
вместо:
select a.name
from artist a
where exists (select 1
from artist_event ae join
event e
on e.id = ae.event_id
where a.id = ae.artist_id
и e.start_time> = '2019-12 -01 'и e.start_time <' 2020-01-01 '); </p>
Это устраняет дублирование устранения во внешнем запросе.