这是我的问题。 我有一个表(tblCourses)有三列:Course,StartDate和EndDate
我想创建一个查询,它给出了StartDate和EndDate之间的所有日期。
所以,如果我有
我希望查询显示:
场; NewDate
我已经完成了很多谷歌搜索,我已经浏览了stackoverlow论坛,但我似乎无法找到解决方案。任何帮助都会非常感激!
答案 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查询中更好地解决了。
它不直接的原因是您尝试在结果集中生成不在表中的行。
作为一个快速黑客,你可以创建另一个日期并填写它几年。然后你可以做一个直接连接,这将获得你正在寻找的结果。