【问题标题】:Subtract days from date, and then round result to end of week date in Redshift从日期中减去天数,然后将结果舍入到 Redshift 中的周末日期
【发布时间】:2019-01-23 19:16:05
【问题描述】:

对不起,如果这听起来有点混乱......

我正在使用一个表格,该表格每周汇总数据,从周日到周六。日期列存储周末日期;例如,上周将是 2019-01-19 的周末日期。

我正在尝试从上周的结束日期 2019-01-19 减去 360 天后的总记录。但是,如果我减去 360 天,并且日期不是星期六,则记录将被忽略。

如何从 2019 年 1 月 19 日减去 360 天,并确保计算的日期也舍入到该周的结束日期?

2019-01-19 - 360 = 2018-01-24,这是一个星期三。我希望它四舍五入到那周的星期六,2018-01-27

【问题讨论】:

  • 所以你基本上想减去一个倍数而不是 360?

标签: sql amazon-redshift


【解决方案1】:

这样的事情应该可以 我还没有测试过,但是你看到了这个想法,可以根据你的需要进行修改

select (date_trunc('week','2019-01-19'::date) - (interval '1 week' * floor(360/7))) + interval '6 days';

如果它关闭并且您看不到要进行哪些更改以使其正常工作 - 然后发表评论。

【讨论】:

  • 不要完全理解(例如间隔+6天部分),但会玩弄它
  • 这个想法是 1) 到一周的第一天 2) 减去正确的周数 3) 添加 6 天到一周的最后一天
【解决方案2】:

在 Google BigQuery 标准 SQL 中,您可以执行以下操作:

SELECT DATE_TRUNC(DATE_ADD(<YOUR_DATE>), INTERVAL -360 DAY), WEEK(SATURDAY))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多