В MySQL вы можете написать:
SELECT * FROM x
WHERE yid=r=d
AND h.test1 <= todaysdate
AND h.test1 >= ADDDATE(todaysdate, INTERVAL 31 DAY);
Вы в любом случае уверены в своем запросе?
Не хотите вместо этого (даты до сегодняшнего дня или после 30 дней):
SELECT * FROM x
WHERE yid=r=d
AND (h.test1 <= todaysdate
OR h.test1 >= ADDDATE(todaysdate, INTERVAL 31 DAY));
или (даты от сегодняшнего дня до 30 дней с сегодняшнего дня)
SELECT * FROM x
WHERE yid=r=d
AND h.test1 BETWEEN todaysdate AND ADDDATE(todaysdate, INTERVAL 31 DAY);
ИЗМЕНЕНО после комментария пользователя :
В MS SQL вы можете использовать
SELECT * FROM x
WHERE yid=r=d
AND h.test1 BETWEEN todaysdate AND DATEADD(dd, 30, todaysdate);
или
SELECT * FROM x
WHERE yid=r=d
AND h.test1 BETWEEN DATEDIFF(dd, 30, todaysdate) AND todaysdate;
Обратите внимание, что (как я уже говорил вам в моем комментарии) @dbaseman дал вам правильный синтаксис для добавления дней. Мой правильный запрос с использованием этого синтаксиса.
ИЗМЕНЕНО снова после комментария пользователя:
SELECT * FROM x
WHERE yid=r=d
AND h.test1 BETWEEN DATEDIFF(dd, 30, NOW()) AND NOW();