Проверил, теперь все гуд. Спасибо за хороший вопрос.
SELECT * FROM user p LEFT JOIN horoscope ph
ON
(
convert(MONTH(p.birthday), UNSIGNED INTEGER) >= convert(LEFT(ph.date_start, 2), UNSIGNED INTEGER)
AND convert(DAYOFMONTH(p.birthday), UNSIGNED INTEGER) >= convert(RIGHT(ph.date_start, 2), UNSIGNED INTEGER)
AND convert(DAYOFMONTH(p.birthday), UNSIGNED INTEGER) <= "31"
)
OR
(
convert(MONTH(p.birthday), UNSIGNED INTEGER) <= convert(LEFT(ph.date_end, 2), UNSIGNED INTEGER)
AND convert(DAYOFMONTH(p.birthday), UNSIGNED INTEGER) <= convert(RIGHT(ph.date_end, 2), UNSIGNED INTEGER)
AND convert(DAYOFMONTH(p.birthday), UNSIGNED INTEGER) >= "0"
)
WHERE ph.name = 'Capricorn'