Вы можете использовать условные предложения WHERE для достижения этого.
Если временная метка равна нулю, она пропустит предложение справа.Причинение вашего запроса только для поиска временных отметок, когда у вас есть.
AND (v_start_date IS NULL AND v_end_date IS NULL) OR audit_start_time BETWEEN v_start_date AND v_end_date
Запустите дополнительную проверку, чтобы сделать обратное, т. Е. Пропустить только, когда она равна нулю.
AND (NOT (v_start_date IS NULL AND v_end_date IS NULL)) OR audit_start_time BETWEEN now() AND now() - INTERVAL '7 days'
Редактировать: Предполагая, что некоторые переменные из контекста хранимой процедуры, v_start_date и v_end_date должны быть временными метками.