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"
]
正如你所看到的,这个月返回两次,两次五月,三月两次,两次月,和十月两次。
我其实只需要前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
函数不会处理闰年或31st。
JavaScript是用来计算幕后的日期,如果你在那里增加一个月,那么一天会改变。这是好还是坏取决于用例IMO。仅改变月份编号(和上/下溢年)的缺点是,在几个月末的多天会映射到另一个月份的最后一天,例如, 2017-01-28至2017-01-31至2017-02-28。相反,这更复杂 - 应该在2月28日映射到1月/ 3月28日还是31日?或者介于两者之间? – CoDEmanX
这是非常令人困惑的 - 我的目的,我绝对想减去一个月报告前一个月,而不是在同一个月或跳过一个月。我很少关心“今天的日期,上个月”发生了什么,但我非常关心每月汇总数据。我的上述解决方案的工作原理,但我真的想有一个可靠的数据库内的功能,实现这一点。 –