我有一个redshift表,其中scannable_id_latest_update_timestamp是包含纪元时间戳的列。我正在尝试运行一个查询,该查询返回scannable_id_latest_update_timestamp超过6个月的所有行
尝试以下查询
select *
from scannable_id_pin_mappings
where date_cmp(dateadd(month,6,current_date), timestamp 'epoch' +
scannable_id_latest_update_timestamp * interval '1 second') = -1;
获取异常
无效操作:函数date_cmp(没有时区的时间戳, 没有时区的时间戳记)不存在;
答案 0 :(得分:0)
假设scannable_id_latest_update_timestamp
是一个纪元值,则可以通过将另一个时间戳转换为纪元来直接比较它们而无需使用函数。
SELECT EXTRACT( EPOCH FROM DATEADD( month , -6 , current_date ) ) ;
-- date_part
-- ------------
-- 1542931200
SELECT *
FROM scannable_id_pin_mappings
WHERE scannable_id_latest_update_timestamp
< EXTRACT( EPOCH FROM DATEADD( month , -6 , current_date ) ) ;