我有一个postgres表,其中包含用户记录。我想选择last_visit
时间戳记在上周内或在上周创建帐户的所有记录。但是,如果用户尚未访问过,则last_visit
时间戳为null(是的,我知道,它没有设置为默认的帐户创建日期)。
所以,我需要选择所有记录,其中无论是在last_visit
是在过去的一周,如果是零,其中creation_date
在最后一周。
像这样的东西,尽管这行不通(而且我尝试过的其他十几种语法也不行:
SELECT * FROM users
WHERE
IF (users.last_active IS NULL) THEN
value(users.last_visit,timestamp(users.creation_date)) < current timestamp - 7 days
ELSE
users.last_active < current timestamp - 7 days
END IF
有什么建议吗?
您可以coalesce()
为此使用:
where coalesce(last_visit, creation_date) >= current_timestamp - interval '7' day
coalesce()
从提供的列表中返回第一个非空值。因此,如果last_visit
为null,creation_date
则使用。除此以外last_visit
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句