首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SlamData DATE_PART

SlamData DATE_PART
EN

Stack Overflow用户
提问于 2016-08-12 22:12:20
回答 2查看 170关注 0票数 1

有没有办法告诉SlamData,一周从周一开始(就像在德国一样)?

我想GROUP BY DATE_PART("week", c.createdAt),这总是错的,因为SlamData的一周比我们的早一天开始。

在一些数据库系统中,你可以"SET DATEFIRST 1“来解决这个问题,但在这里不行。

EN

回答 2

Stack Overflow用户

发布于 2016-08-12 23:30:22

您可以使用SQL CASE表达式来实现所需的效果:

代码语言:javascript
复制
GROUP BY 
  (CASE DATE_PART("week", c.createdAt)
    WHEN 1 THEN 7
    WHEN 2 THEN 1
    WHEN 3 THEN 2
    WHEN 4 THEN 3
    WHEN 5 THEN 4
    WHEN 6 THEN 5
    WHEN 7 THEN 6
  END)

这将转移到周日到一周的最后一天。

票数 0
EN

Stack Overflow用户

发布于 2016-08-25 05:32:31

SQL对“一年中的一周”的定义似乎与MongoDB的定义有冲突。

根据PostgreSQL docs的说法:

根据定义,

周从星期一开始,一年的第一周包含该年的1月4日。

MongoDB则是这样的:

周从星期天开始,第一周从一年中的第一个星期天开始...此行为与strftime标准库函数的“%U”运算符相同。

Quasar (SlamData背后的查询引擎)在本例中直接使用MongoDB运算符,这就是您将看到的行为。

我怀疑从另一个中获取一个是可能的,这是类星体应该做的,我鼓励你写一个github问题来报告这是一个错误:https://github.com/quasar-analytics/quasar/issues

在SQL中表达同样的修复应该也是可能的,但它不太可能很好用。如果我最终修复了Quasar中的错误,我会用我想出的公式更新这个答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38920118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档