Соглашаясь с тем, что сказал @Gordon Linoff, было бы полезно узнать структуру ваших таблиц, полученные результаты и желаемые результаты.
Я воссоздал аналогичный сценарий в BQ, используя то же предложение WHERE, которое вы использовали, и оно работает хорошо, за исключением того, что интервалы не являются включающими (так как вы используете операторы <и> вместо <= и> =), так что вы на самом деле получаете результаты за 29 дней до и через 29 дней после даты create_at; будет ли это то, на что вы ссылаетесь, когда говорите, что ваш запрос не дает вам всех результатов, которые вы хотите?
Если это так, вы можете попробовать использовать упомянутые операторы:
WHERE DATE >= DATE_SUB(CAST(created_at AS date), INTERVAL 30 DAY)
AND DATE <= DATE_ADD(CAST(created_at AS date), INTERVAL 30 DAY)
или вы также можете использовать оператор МЕЖДУ , который имеет включающие ограничения:
WHERE DATE BETWEEN DATE_SUB(CAST(created_at AS date), INTERVAL 30 DAY)
AND DATE_ADD(CAST(created_at AS date), INTERVAL 30 DAY)