应该享受圣诞节!
此代码将为在“一年中的第几天”等于 358 到新年后的第 2 天之间登录的每位用户授予徽章。请随意调整措辞!
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
我希望它能在这两个日期之间的每一天访问时授予徽章。请帮忙!
我认为如果你添加另一个字段,比如"visited_at",就能行得通。
因为你目前只使用了 user_id 和 current_timestamp,而它们仅在 user_id 上是不同的,因为 current_timestamp 在每一行中都是相同的。
如果添加了 visited_at,它们就可以区分开来,从而每天授予一个徽章。
不过也许你已经解决这个问题了吧 
编辑 1:实际上,我不认为这个查询需要 distinct。
基于 @Rafael_Lima_Vasconce 的建议,我创建了一个“2019 年复活节”徽章示例。
除了修改这里发布的一些酷炫徽章查询中的数值外,我完全没有 SQL 经验,但我看不出任何迹象表明这行不通(假设您仍在尝试寻找解决方案)。
如果您希望用户多次获得该徽章,我认为只需在设置徽章时启用相应的复选框选项即可。否则,它应该只在指定时间段内用户首次访问时授予该徽章。