Este código otorga una insignia a cada usuario que inicie sesión entre el “Día del Año” 358 y 2 días después del inicio del nuevo año. ¡Redáctalo como prefieras!
SQL:
SELECT distinct(user_id), CURRENT_DATE as granted_at FROM user_visits WHERE
date_part('doy', visited_at) >= 358
OR
date_part('doy', visited_at) <= 2
Lo que me gustaría es que otorgue la insignia cada día que visiten entre las dos fechas. ¡Ayuda, por favor!
Creo que si agregas otro campo como “visited_at” funcionaría.
Porque estás usando solo user_id y current_timestamp, y son distintos solo en user_id, porque current_timestamp sería el mismo en cada fila.
Si agregas visited_at, podrían ser distintos, y así una insignia por cada día.
Pero quizás ya resolviste esto
Edición 1: En realidad, no creo que esta consulta necesite el DISTINCT.
Basándome en lo que sugirió @Rafael_Lima_Vasconce, creé el siguiente ejemplo de una insignia “Pascua 2019”.
No tengo ninguna experiencia con SQL más allá de modificar valores numéricos en algunas consultas de insignias interesantes que se han publicado aquí, pero no veo ninguna indicación de que esto no debería funcionar (asumiendo que aún estás buscando una solución).
Si deseas que las personas reciban la insignia varias veces, creo que simplemente habilitar esa opción de casilla al configurar tu insignia debería ser suficiente. De lo contrario, solo les otorgará la insignia la primera vez que visiten durante el período especificado.