Sql 生成给定用户输入范围(日期)的表,然后将24小时(第2列)附加到每个日期

Sql 生成给定用户输入范围(日期)的表,然后将24小时(第2列)附加到每个日期,sql,ms-access-2007,Sql,Ms Access 2007,我之前问过这个问题,但我认为我的措辞很糟糕,或者可能不够清楚。我对Access和SQL非常陌生,但我对计算机非常熟练。我读过一些关于Access/SQL的书籍/网站,但我发现这个问题有点难。如果是一个简单的选择范围,这将容易得多,但是场景希望我从一个日期范围(窗口提示)生成一个表,然后将0-23附加到每个日期。它为与之关联的每个小时重复相同的日期 我对生成增量日期非常迷茫,更不用说附加小时了 示例输出给定示例输入1/01/2009、7/30/2009 使用MS Access 2007 Colum

我之前问过这个问题,但我认为我的措辞很糟糕,或者可能不够清楚。我对Access和SQL非常陌生,但我对计算机非常熟练。我读过一些关于Access/SQL的书籍/网站,但我发现这个问题有点难。如果是一个简单的选择范围,这将容易得多,但是场景希望我从一个日期范围(窗口提示)生成一个表,然后将0-23附加到每个日期。它为与之关联的每个小时重复相同的日期

我对生成增量日期非常迷茫,更不用说附加小时了

示例输出给定示例输入1/01/2009、7/30/2009

使用MS Access 2007

Column 1 (Date) Column 2 (Hour) 01/01/2009 0 01/01/2009 1 01/01/2009 2 01/01/2009 3 01/01/2009 4 01/01/2009 ... continues to 23 01/01/2009 22 01/01/2009 23 01/02/2009 0 01/02/2009 1 01/02/2009 2 01/02/2009 3 01/02/2009 4 01/02/2009 .. continues to 23 01/02/2009 0 01/02/2009 1 .................................. continues until the end date supplied by the user 07/30/2009 22 07/30/2009 23 第1列(日期)第2列(小时) 01/01/2009 0 01/01/2009 1 01/01/2009 2 01/01/2009 3 01/01/2009 4 01/01/2009 ... 持续到23岁 01/01/2009 22 01/01/2009 23 01/02/2009 0 01/02/2009 1 01/02/2009 2 01/02/2009 3 01/02/2009 4 01/02/2009 .. 持续到23岁 01/02/2009 0 01/02/2009 1 .................................. 持续到用户提供的结束日期 07/30/2009 22
2009年7月30日23以下是我要做的

我会创建一个日期表——最简单的方法是用Excel自动填写任意年份的日期,然后将其复制到表中。表应该有一个ID和日期。例如:

ID        Date
==========================
1         2010-01-01
2         2010-01-02
....
我还将创建一个小时表——同样是一个ID和一个小时列(整数)

然后创建一个查询。如果使用的是设计视图,请添加两个新表。添加日期列和小时列。在日期字段的条件中,输入“介于[StartDate]和[EndDate]之间”。指定日期列和小时列应按升序排序。将其更改为生成表查询并运行它。系统将提示您输入开始日期和结束日期。那就够了

以下是生成的SQL(如果有帮助):

SELECT Dates.ShortDate, Hours.Hour INTO DatesHours
FROM Dates, Hours
WHERE (((Dates.ShortDate) Between [StartDate] And [EndDate]))
ORDER BY Dates.ShortDate, Hours.Hour;

是否有任何其他数据需要附加到此文件?例如,小时销售数据或其他类型的小时报告?不。这是作业的范围。您似乎正在使用Access,那么为什么不使用VBA呢?否则,我想你需要一张有描述的柜台。
SELECT Dates.ShortDate, Hours.Hour INTO DatesHours
FROM Dates, Hours
WHERE (((Dates.ShortDate) Between [StartDate] And [EndDate]))
ORDER BY Dates.ShortDate, Hours.Hour;