问题描述
created_at -键入带时区的时间戳记
查询:
key
-------
code
Company
Region
成功工作。很好。
现在我只想显示 delta_sec> 10000
的记录我尝试这个:
select id,created_at,extract(epoch from CURRENT_TIMESTAMP - created_at) as delta_sec
from shop_order
但是我得到了错误:
select id,extract(epoch from CURRENT_TIMESTAMP - created_at) as delta_sec
from shop_order
where delta_sec > 10000
解决方法
或者,如果要使用别名进行过滤,请先将数据放入CTE:
WITH cte_name AS (
SELECT
id,created_at,extract(epoch from CURRENT_TIMESTAMP - created_at) as delta_sec
FROM shop_order
)
SELECT *
FROM cte_name
WHERE delta_sec > 10000
,
只需重复该表达式即可,而不要使用其别名,例如:
select
id,extract(epoch from CURRENT_TIMESTAMP - created_at)
from shop_order
where extract(epoch from CURRENT_TIMESTAMP - created_at) > 10000
如果您担心数据库将运行该表达式两次,从而减慢查询速度:请放心,让PostgreSQL处理它。