0

我有一个表date_days,其中包含 1 个字段attdate作为日期

我想创建一个接受 1 或 2 参数的查询。IE :

QueryGetDays(#01/06/2013#,#30/06/2013#)
QueryGetDays(#01/06/2013#) and the query can tell the end of month by itself.

此查询将删除 date_days 中的所有现有记录,并在表中插入从 01/06/2013 到 30/06/2013 的日期date_days

我可以生成日期并从 vb.net 进行插入

但我想知道这是否可以使用 ACCESS 中的查询来完成?

4

2 回答 2

1

我喜欢挑战。如果我们创建一个带有单个字段 (dummydate) 的虚拟表(名为 dummytable),并添加一条记录 0(或任何其他数字),我们可以运行以下查询。在弹出的参数框中输入当月的第一个日期(2012 年 1 月 6 日),它将填充 2012 年 1 月 6 日到 2012 年 6 月 30 日之间的所有日期。输入 2012 年 1 月 2 日将输入截至 2012 年 2 月 29 日的日期。

PARAMETERS [Enter date] DateTime;
INSERT INTO date_days (attdate) 
SELECT [Enter date]+dummydate  
FROM (
        SELECT 0 AS dummydate FROM dummytable
        UNION SELECT 1 FROM dummytable 
        UNION SELECT 2 FROM dummytable 
        UNION SELECT 3 FROM dummytable 
        UNION SELECT 4 FROM dummytable 
        UNION SELECT 5 FROM dummytable
        UNION SELECT 6 FROM dummytable 
        UNION SELECT 7 FROM dummytable
        UNION SELECT 8 FROM dummytable 
        UNION SELECT 9 FROM dummytable 
        -- fill in the rest here..
        UNION SELECT 24 FROM dummytable 
        UNION SELECT 25 FROM dummytable 
        UNION SELECT 26 FROM dummytable 
        UNION SELECT 27 FROM dummytable
        UNION SELECT 28 FROM dummytable 
        UNION SELECT 29 FROM dummytable
        UNION SELECT 30 FROM dummytable 
) WHERE Month([Enter date]+dummydate) = Month([Enter date]);

DELETE 查询需要单独运行。

于 2013-07-03T15:25:27.423 回答
0

好吧,一个更有效的方法是创建一个名为tblNos的表,其中包含一个名为Nos的字段,其中仅包含数字 0 到 30。然后运行以下查询:

PARAMETERS [Enter date] DateTime;
INSERT INTO date_days ( attdate )
SELECT [Enter date]+Nos FROM tblNos
WHERE Month([Enter date]+Nos) = Month([Enter date]);
于 2013-07-04T19:14:17.713 回答