创建一个显示日期范围内所有日期的查询

时间:2015-01-19 20:43:12

标签: ms-access-2010 date-range

这是我的问题。 我有一个表(tblCourses)有三列:Course,StartDate和EndDate

我想创建一个查询,它给出了StartDate和EndDate之间的所有日期。

所以,如果我有

  • 课程:A
  • StartTime:1/10/15
  • 结束时间:2015年1月15日

我希望查询显示:

场; NewDate

  • A _ 1/10/15
  • A _ 1/11/15
  • A _ 1/12/15
  • A _ 1/13/15
  • A _ 1/14/15
  • A _ 1/15/15

我已经完成了很多谷歌搜索,我已经浏览了stackoverlow论坛,但我似乎无法找到解决方案。任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:1)

正如Yermo在他的回答中所述,一种方法是使用包含一段时间内每个有效日期的[日期]表。另一种方法是使用包含从0到(足够大的数字)的整数值的[Numbers]表,例如,

 n
--
 1
 2
 3
...
19
20

创建该表后,您可以使用

之类的查询
SELECT tblCourses.Course, DateAdd("d", Numbers.n, tblCourses.StartDate) AS NewDate
FROM tblCourses, Numbers
WHERE DateAdd("d", Numbers.n, tblCourses.StartDate) <= tblCourses.EndDate

会返回

Course  NewDate   
------  ----------
A       2015-01-10
A       2015-01-11
A       2015-01-12
A       2015-01-13
A       2015-01-14
A       2015-01-15

答案 1 :(得分:0)

这实际上在代码中比在SQL查询中更好地解决了。

它不直接的原因是您尝试在结果集中生成不在表中的行。

作为一个快速黑客,你可以创建另一个日期并填写它几年。然后你可以做一个直接连接,这将获得你正在寻找的结果。