有没有一种方法可以使用 neo4j / cypher 来计算两个日期之间的天数差异而不包括周末(基本上只计算工作/公司开放日)?
此查询中的某些内容:
return duration.inDays(date("2022-01-01"), date("2022-01-19")).days
Run Code Online (Sandbox Code Playgroud)
但没有周末。
我怎样才能做到这一点?
工作日没有日期函数,但我们可以通过创建开始日期和结束日期之间的日期列表来计算它。然后使用函数 weekDay (其中 weekday:1 是星期一,5 是星期五),我们可以从列表中删除周末。然后计算该列表中的工作日数。
\n WITH date("2022-01-01") AS startDate, date("2022-10-19") AS endDate\n WITH startDate, duration.inDays(startDate, endDate).days AS days\n WITH [day in range(0, days) | startDate + duration({days: day})] as calendarDays\n WITH [c in calendarDays where c.weekDay < 6 | c] as workingDays\n RETURN size(workingDays) as workingDays\n\n\n\xe2\x95\x92\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x95\n\xe2\x94\x82"workingDays"\xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82208 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\nRun Code Online (Sandbox Code Playgroud)\n