AND ( (c.pubyear >= extract(YEAR from b.first) AND extract(MONTH from b.first) = 01 AND extract(DAY from b.first) = 01)
OR (c.pubyear > extract(YEAR from b.first) AND (extract(MONTH from b.first) != 01 OR extract(DAY from b.first)!= 01) AND extract(YEAR from b.first) != extract(YEAR from b.last))
OR (c.pubyear >= extract(YEAR from b.first) AND (extract(MONTH from b.first) != 01 OR extract(DAY from b.first)!= 01) AND extract(YEAR from b.first) = extract(YEAR from b.last))