【问题标题】:How do I compare a date range to values in a table?如何将日期范围与表格中的值进行比较?
【发布时间】:2015-06-01 13:14:45
【问题描述】:

我有一个表格,用户可以在其中根据他希望提前计划的天数来计划材料转移。今天是星期一。假设他选择要提前 2 天计划 - 直到周二和周三。因此,他会在表单上的文本框中输入“3”(他必须将今天作为日期之一,以使用户可以只考虑当天)。我的报告需要了解他想要使用日期 2015 年 6 月 1 日、2015 年 6 月 2 日和 2015 年 6 月 3 日。

[SelectedDays] = 3

因此,[SelectedRange] = 6/1/2015 6/2/2015 6/3/2015

我正在检查的表格中的作业将工作时间间隔显示为日期和时间。我可以解析它以仅返回日期。

Job       Run Date
A         6/2/2015
A         6/3/2015
A         6/4/2015

我将如何编写一个查询来检查所选范围与运行日期并最终返回作业在所选范围内运行的天数在在上面的示例中,我需要最终输出为 2,因为从 2015 年 6 月 1 日到 2015 年 6 月 3 日,作业 A 在该范围内运行了 2 天。

【问题讨论】:

  • 为什么不是工作 B?它也在为 6/3/2015 运行,它包含在范围内,不是吗?
  • 哦,天哪,这是我的一个大错误。对不起!实际上,是的,有多个工作,但我想简化为一个工作。这样做的目的是简单地弄清楚如何比较这些日期范围。我会解决我的问题。

标签: ms-access-2010 date-range


【解决方案1】:

您可以在FROM 子句中使用BETWEEN 关键字来获取您需要的数据。类似的东西,

SELECT
    Count(someField) As TotalJobs
FROM
    yourTableName
WHERE
    yourDateField 
    BETWEEN Date() AND DateAdd("d", [Forms]![yourFormName]![SelectedDays] - 1, Date())

这应该给你工作的数量,在TodayToday + 3之间

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    相关资源
    最近更新 更多