过去 7 天 Unix/Redshift 过滤器不工作
Posted
技术标签:
【中文标题】过去 7 天 Unix/Redshift 过滤器不工作【英文标题】:Last 7 days Unix/Redshift filter not working 【发布时间】:2018-10-22 00:33:03 【问题描述】:这个查询发生在 Redshift 中,它的 SQL 特性让我发疯。
我的表中有一个 UNIX 纪元时间戳,我需要过滤最近 7 天。 Redshift 缺少from_unixtime()
功能,所以我一起破解了这个。 tb_h
是 UNIX 日期列。 604800000 是 7 天期间的毫秒数。
"tb_h" >= DATE_PART(epoch, DATEADD(milliseconds, -604800000, DATEADD(day, -1, trunc(getdate()))))
此解决方法不会过滤最后七个,它允许所有日期通过。我的逻辑错误是什么?
【问题讨论】:
【参考方案1】:如果你使用更合理的减法类型会发生什么?
"tb_h" >= DATE_PART(epoch, DATEADD(day, -7, DATEADD(day, -1, CURRENT_DATE)))
其次,在 Postgres 中,epoch
返回秒数——我不确定 Redshift 是否相同。如果您的值以毫秒或微秒为单位,则需要相乘:
"tb_h" >= 1000 * DATE_PART(epoch, DATEADD(day, -8, CURRENT_DATE))
【讨论】:
不幸的是,这些解决方案都不起作用,顶部的一个返回所有日期,底部的一个什么也不返回。我将继续测试这些并尝试让它们发挥作用。 我的时间戳是13位,单位是毫秒 问题是时间戳字段实际上不是时间戳数据类型,它被记录为 BIGINT以上是关于过去 7 天 Unix/Redshift 过滤器不工作的主要内容,如果未能解决你的问题,请参考以下文章
如何将行旋转为列,并按过去 7 天显示 - SQL SERVER