Mit der Funktion DATE_SUBTRACT
in AQL scheint Arango bei der Verarbeitung von Terminen gegen Ende des Monats 30 Tage zu subtrahieren, anstatt den tatsächlichen vorherigen Monat zurückzugeben. z.B .:ArangoDB Date Math - Monatsunterschied
for mo in 0..11
let month = date_subtract(date_now(),count,"month")
return month
kehrt
[
"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"
]
Wie Sie sehen können, gibt diese zweimal Juli Mai zweimal, zweimal März zweimal Dezember und zweimal Oktober.
Ich brauche eigentlich nur die vorherigen 12 Monate. Die Liste Ich mag würde, ist:
[
"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"
]
Wie in AQL konnte ich sicher, ich immer den aktuellen Vormonats bekommen, anstatt einfach 30 Tage in der Vergangenheit? Ich befürchte, dass die date_subtract
Funktion keine Schaltjahre oder 31sts behandelt.
JavaScript wird verwendet, um Daten hinter den Kulissen zu berechnen, und wenn Sie einen Monat hinzufügen, ändert sich der Tag. Ob dies gut oder schlecht ist, hängt vom Anwendungsfall IMO ab. Der Nachteil, nur die Monatszahl (und das Jahr bei Über-/Unterlauf) zu ändern, wäre, dass mehrere Tage am Ende einiger Monate auf den letzten Tag eines anderen Monats, z. 2017-01-28 bis 2017-01-31 bis 2017-02-28. Andersherum ist es noch komplizierter - sollte 28. Februar Karte zu Jan/28. März oder 31.? Oder etwas dazwischen? – CoDEmanX
Es ist sehr verwirrend - für meine Zwecke möchte ich definitiv die Subtraktion eines Monats für den vorherigen Monat, nicht für den gleichen Monat oder einen Monat überspringen. Sehr selten interessiert mich, was am "heutigen Datum, letzten Monat" passiert ist, aber ich sorge mich sehr darum, Daten monatlich zu aggregieren. Meine obige Lösung funktioniert, aber ich hätte wirklich gerne eine zuverlässige In-Database-Funktion, die das leistet. –