【问题标题】:Last 7 days Unix/Redshift filter not working过去 7 天 Unix/Redshift 过滤器不工作
【发布时间】: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()))))

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

【问题讨论】:

    标签: sql unix amazon-redshift epoch


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2014-08-07
    • 2022-07-20
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多