【问题标题】:Set DATE_TRUNC week date to Saturday instead of Monday将 DATE_TRUNC 周日期设置为星期六而不是星期一
【发布时间】:2019-10-08 20:04:21
【问题描述】:

我有想要汇总到每周的每日数据。 date_trunc 函数将默认日期设置为星期一。我想将星期日期开始到星期六。

我尝试了以下方法,但没有成功:

DATE_TRUNC('week',(ds + interval '1 day')) - interval '1 day' AS _week

这是 DATE_TRUNC 函数,工作正常,但从星期一开始:

DATE_TRUNC('week', DATE(ds))

这是我使用第一个代码时遇到的错误:

(SYNTAX_ERROR) line 32:67: mismatched input 'AS'. Expecting: '%', '*', '+', '-', '.', '/', 'AT', '[', '||', <expression>

【问题讨论】:

    标签: sql presto


    【解决方案1】:

    移动单引号是否有效:

    ( DATE_TRUNC('week', (ds + interval '1' day)) - interval '1' day ) AS _week
    

    我不确定这是否符合您的要求(我认为您想要 '2' day),但这是一个不同的问题。

    【讨论】:

    • (SYNTAX_ERROR) line 32:67: mismatched input 'AS'. Expecting: '%', '*', '+', '-', '.', '/', 'AT', 'TO', '[', '||', &lt;expression&gt; 按照建议移动单引号后,我仍然遇到同样的错误。不知道为什么。是的,我想要两天 :)
    • @kenkenhimself 。 . .我怀疑问题出在您查询中的这个表达式之前。
    • 修复了 GROUP BY 下的错误,但这次我得到了不同的错误(SYNTAX_ERROR) line 4:27: '+' cannot be applied to varchar, interval day to second
    • @kenkenhimself 。 . .我会说你有相当严重的问题。为什么将日期/时间值存储为字符串而不是本机类型?为什么不在查询中解释这一点?什么group by?您应该提出另一个问题,其中包含完整的查询、示例数据、所需结果、表格布局以及您想要做什么的说明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2012-11-27
    相关资源
    最近更新 更多