您不能在
WHERe条件中引用别名,因为在逻辑上
WHERe先执行
SELECt。
您可以使用子查询:
SELECT * FROM (SELECt date, AGE(now(), date) as t1 FROM dates) subWHERe sub.t1 > interval '0::seconds';
或
LATERAL(我最喜欢的方式):
SELECt date, s.t1FROM dates,LATERAL (SELECt AGE(now(), date) as t1) AS sWHERe s.t1 > interval '0::seconds';
或重复表达(违反DRY原理):
SELECT date, AGE(now(), date) as t1FROM datesWHERe AGE(now(), date) > interval '0::seconds';
至于计算,
AGE您实际上并不需要它,因为您可以将其重写为
date > now()。
相关文章:
MySQL-搜索自定义列
为什么“ inq tosql”查询与常规SQL查询不同,以FROM关键字开头?



