有没有办法告诉SlamData,一周从周一开始(就像在德国一样)?
我想GROUP BY DATE_PART("week", c.createdAt),这总是错的,因为SlamData的一周比我们的早一天开始。
在一些数据库系统中,你可以"SET DATEFIRST 1“来解决这个问题,但在这里不行。
发布于 2016-08-12 23:30:22
您可以使用SQL CASE表达式来实现所需的效果:
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)这将转移到周日到一周的最后一天。
发布于 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中的错误,我会用我想出的公式更新这个答案。
https://stackoverflow.com/questions/38920118
复制相似问题