最近 7 天 Unix/Redshift 过滤器不起作用

Last 7 days Unix/Redshift filter not working

这个查询发生在 Redshift 中,它的 SQL 特质让我抓狂。

我的 table 中有一个 UNIX 纪元时间戳,我需要筛选最近的 7 天。 Redshift 缺少 from_unixtime() 函数,所以我一起破解了它。 tb_h 是 UNIX 日期列。 604800000 是 7 天内的毫秒数。

"tb_h" >= DATE_PART(epoch, DATEADD(milliseconds, -604800000, DATEADD(day, -1, trunc(getdate()))))

此解决方法不会过滤最后七个日期,它允许所有日期通过。我的逻辑错误是什么?

如果使用更合理的减法类型会怎样?

"tb_h" >= DATE_PART(epoch, DATEADD(day, -7, DATEADD(day, -1, CURRENT_DATE)))

其次,在 Postgres 中,epoch returns 秒数 -- 我不确定 Redshift 是否相同。如果你的值是毫秒或微秒,你需要乘以:

"tb_h" >= 1000 * DATE_PART(epoch, DATEADD(day, -8, CURRENT_DATE))