2

我真的不知道如何问这个问题或给它命名,但我走了。我在学校系统工作,我为一些心理学家创建了一个数据库,用于跟踪他们的推荐。根据州规定,他们有 60 天的时间从第一次会议之日起完成该过程。周末仍然算数,但假期不算数。我真的不知道如何使用我们拥有的日历,以便我们进行准确的计算。例如,考虑到假期,如果一个孩子今天开始,他需要在 2013 年 1 月 18 日完成所有事情,即根据我们的日程安排从现在起 60 天。有谁知道我应该从哪里开始?

编辑

好的,所以我现在有一个日历表。这是我的问题。我有我的专栏,我曾经指出在计算我的 60 天时使用了哪些天。周末可用于该计算。但是,它们不能在结果中使用。如果第 60 天是星期日或星期六,则日期需要提前到星期五。我想我的第一个问题真的是,如何将我的计算限制在日历表中的日期?

4

2 回答 2

1

使用日历表可以很容易地做到这一点。

PARAMETERS start_date DateTime;
SELECT TOP 1 sub.the_date
FROM
    (
        SELECT TOP 60 the_date
        FROM tblCalendar
        WHERE
                the_date>=[start_date]
            AND work_day=True
        ORDER BY the_date
    ) AS sub
ORDER BY sub.the_date DESC;

该查询基于您为要评估的日期设置的work_day假设True。IOW,work_dayFalse适用于您组织的假期。

有关创建和加载日历表的示例代码,请参阅在 Access 查询中使用开始日期和结束日期中CreateTable_calendar()的和LoadCalendar()过程。要最初将包括周末在内的所有日期分配为工作日,请在.LoadCalendar()

'rs!work_day = Not (Weekday(dte) = vbSunday Or _
'    Weekday(dte) = vbSaturday)
rs!work_day = True

最后,手动编辑表格以更改work_dayFalse您的假期。

于 2012-10-25T17:25:24.067 回答
0

您可以检查工作日以确保您没有选择周末:

SELECT TOP 1 CalDate, WDay 
FROM (SELECT Top 60 c.CalDate,Weekday([Caldate]) AS WDay
      FROM Calendar c
      WHERE c.Holiday=False) a
WHERE WDay Not In (1,7)
ORDER BY CalDate DESC
于 2012-10-25T19:26:41.983 回答