2016-08-12 2 views
1

SlamDataに週が月曜日から始まるようにする方法はありますか(ドイツと同様)?SlamData DATE_PART

GROUP BY DATE_PART("week", c.createdAt)は、SlamDataの週が私たちの前日よりもずっと早いので、常に間違っています。

データベースシステムによっては、これを解決するために "SET DATEFIRST 1"を使用できますが、ここではできません。

答えて

0

あなたが望む効果を達成するために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) 

これは、週の最後の日に日曜日シフトします。

0

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のバグを修正してしまう場合は、この回答を私が思いつく数式で更新します。

関連する問題