2016-08-31 6 views
0

AQLでDATE_SUBTRACT関数を使用すると、月末近くの日付を処理するとき、Arangoは実際の前月を返す代わりに30日を減算するようです。例えば:ArangoDB日付数 - 月の差

for mo in 0..11 
    let month = date_subtract(date_now(),count,"month") 
    return month 

戻り

[ 
    "2016-08-31T20:30:24.440Z", 
    "2016-07-31T20:30:24.441Z", 
    "2016-07-01T20:30:24.441Z", 
    "2016-05-31T20:30:24.441Z", 
    "2016-05-01T20:30:24.441Z", 
    "2016-03-31T20:30:24.441Z", 
    "2016-03-02T20:30:24.441Z", 
    "2016-01-31T20:30:24.441Z", 
    "2015-12-31T20:30:24.441Z", 
    "2015-12-01T20:30:24.441Z", 
    "2015-10-31T20:30:24.441Z", 
    "2015-10-01T20:30:24.441Z" 
] 

あなたが見ることができるように、この7月は月二回、月二回、12月二回、10月二回、二回返します。

私は実際には過去12ヶ月間が必要です。私が欲しいリストは:

[ 
    "2016-08-01T00:00:00.000Z", 
    "2016-07-01T00:00:00.000Z", 
    "2016-06-01T00:00:00.000Z", 
    "2016-05-01T00:00:00.000Z", 
    "2016-04-01T00:00:00.000Z", 
    "2016-03-01T00:00:00.000Z", 
    "2016-02-01T00:00:00.000Z", 
    "2016-01-01T00:00:00.000Z", 
    "2015-12-01T00:00:00.000Z", 
    "2015-11-01T00:00:00.000Z", 
    "2015-10-01T00:00:00.000Z", 
    "2015-09-01T00:00:00.000Z" 
] 

私はいつも確実に過去30日間ではなく実際の前月を確実に得ることができるでしょうか?私はdate_subtract関数がうるう年または31stを処理しないことを恐れています。

答えて

1

それはハックですが、私はこれをした後だったものを達成するために管理:に結果の

for mo in 0..11 
    return date_subtract(concat(left(date_iso8601(date_now()),7),'-01T00:00:00.000Z'), mo, "month") 

:私はこれに対する簡単な解決策だろう

[ 
    "2016-08-01T00:00:00.000Z", 
    "2016-07-01T00:00:00.000Z", 
    "2016-06-01T00:00:00.000Z", 
    "2016-05-01T00:00:00.000Z", 
    "2016-04-01T00:00:00.000Z", 
    "2016-03-01T00:00:00.000Z", 
    "2016-02-01T00:00:00.000Z", 
    "2016-01-01T00:00:00.000Z", 
    "2015-12-01T00:00:00.000Z", 
    "2015-11-01T00:00:00.000Z", 
    "2015-10-01T00:00:00.000Z", 
    "2015-09-01T00:00:00.000Z" 
] 

、そうさせて下さい私には1つがあるかどうかわかります。これらの機能はすべてオーバーヘッドです。

+0

JavaScriptは舞台裏で日付を計算するために使用され、そこに月を追加すると、その日が変更されます。これが良いか悪いかは、ユースケースIMOによって異なります。月の数(および過不足の年)を変更するだけの欠点は、数ヶ月の最後の複数の日が別の月の最後の日にマップされることです。 2017-01-28〜2017-01-31〜2017-02-28。それ以外の方法では、さらに複雑です - 2月28日は1月/ 3月28日か31日にマップしますか?間に何か? – CoDEmanX

+0

私の目的上、非常に混乱しています。私は間違いなく、月の減算を前月に報告し、同じ月ではなく、1ヶ月をスキップしたいと考えています。非常にまれに私は「今日の日付、先月」に何が起こったかを気にしていますが、私は毎月のデータ集計に非常に注意を払っています。私の上記の解決策は機能しますが、私は本当にそれを達成する信頼できるデータベース内の機能を持っていたいと思います。 –