Есть ли способ репликации ExcelWORKDAYS при подключении к базе данных Jet через ADO?
2 ответа
5
Сначала предположим, что мы знаем, что начало и конец - будние дни, затем, я думаю, это работает:
([DateEnd]-([DateStart]+(Weekday([DateEnd])-Weekday([DateStart]))))/7*5+(Weekday([DateEnd])-Weekday([DateStart]))+1
- отработать количество недель между датой и временем на 5.
- добавить разницу дня недели
- добавить один, чтобы включить начало и конец
Если вы не знаете, что оба рабочих дня, вам нужна коррекция. Я думаю, что это правильно
([DateEnd]-([DateStart]+(Weekday([DateEnd])-Weekday([DateStart]))))/7*5+(Weekday([DateEnd])-Weekday([DateStart]))+1+IIf(Weekday([DateEnd])=7,-1,0)+IIf(Weekday([DateStart])=1,-1,0)
Я проверил его в Excel, и, кажется, дает правильный ответ
0
Там также есть эта функция. Это алгоритмически почти идентично @ JDunkerley's - просто более многословно. Возможно, проще реализовать в разных средах.