Используя функцию DATE_SUBTRACT
в AQL, при обработке дат ближе к концу месяца Arango, кажется, вычитает 30 дней вместо того, чтобы возвращать фактический предыдущий месяц. например.:
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"
]
Как видите, это возвращает дважды июль, дважды май, дважды март, дважды декабрь и дважды октябрь.
На самом деле мне просто нужны предыдущие 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"
]
Как в AQL я могу убедиться, что всегда получаю фактический предыдущий месяц, а не просто 30 дней в прошлом? Я боюсь, что функция date_subtract
не будет обрабатывать високосные или 31-е годы.