SlamDataに週が月曜日から始まるようにする方法はありますか(ドイツと同様)?SlamData DATE_PART
GROUP BY DATE_PART("week", c.createdAt)
は、SlamDataの週が私たちの前日よりもずっと早いので、常に間違っています。
データベースシステムによっては、これを解決するために "SET DATEFIRST 1
"を使用できますが、ここではできません。
SlamDataに週が月曜日から始まるようにする方法はありますか(ドイツと同様)?SlamData DATE_PART
GROUP BY DATE_PART("week", c.createdAt)
は、SlamDataの週が私たちの前日よりもずっと早いので、常に間違っています。
データベースシステムによっては、これを解決するために "SET DATEFIRST 1
"を使用できますが、ここではできません。
あなたが望む効果を達成するために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)
これは、週の最後の日に日曜日シフトします。
SQLの「week of year」の定義がMongoDBのものと衝突しているようです。 PostgreSQL docsによると
:定義により
、ISO週は月曜日に始まり、年の最初の週は、その年の1月4日が含まれています。
MongoDBこのたのに対し:
週日曜日に始まり、週1年の最初の日曜日から始まる...この動作は「%U」演算子と同じですstrftime標準ライブラリ関数。
Quasar(SlamDataの背後にあるクエリエンジン)は、この場合MongoDB演算子を直接使用しているため、これは表示される動作です。
私はQuasarがやっているはずのものを得ることができると思われます。https://github.com/quasar-analytics/quasar/issuesというgithubの問題を報告することをお勧めします。
回避策として同じ修正プログラムをSQLに記述することも可能ですが、それほど大したものではありません。 IがQuasarのバグを修正してしまう場合は、この回答を私が思いつく数式で更新します。