【发布时间】:2013-07-16 08:54:23
【问题描述】:
我正在寻找在 Field1 不为空时自动将下一个工作日的日期输入到 Field2 中的代码。或者更准确地说,Field2 = Field1 + 1 个工作日
我使用 Access 2007 作为前端,使用 SQL 2008 作为后端。
任何帮助将不胜感激!
【问题讨论】:
标签: sql vba ms-access ms-access-2007
我正在寻找在 Field1 不为空时自动将下一个工作日的日期输入到 Field2 中的代码。或者更准确地说,Field2 = Field1 + 1 个工作日
我使用 Access 2007 作为前端,使用 SQL 2008 作为后端。
任何帮助将不胜感激!
【问题讨论】:
标签: sql vba ms-access ms-access-2007
如果您要在 Access 中针对链接的 SQL Server 表运行查询,则该查询必须使用与 Access 兼容的 SQL。
使Field2 比Field1 日期晚一天:
UPDATE YourTable
SET Field2 = DateAdd('d', 1, Field1)
WHERE Field1 Is Not Null;
要跳过周末,请在 Switch 语句中使用 Weekday 函数来确定要添加多少天。
UPDATE YourTable
SET Field2 =
DateAdd
(
'd',
Switch
(
Weekday(Field1) = 6, 3,
Weekday(Field1) = 7, 2,
Weekday(Field1) >= 1 AND Weekday(Field1)<=5, 1
),
Field1
)
WHERE Field1 Is Not Null;
【讨论】:
听起来您正在寻找带有DATEADD 的UPDATE 声明:
update YourTable
set Field2 = dateadd(day,1,Field1)
where Field1 is not null
或者,如果您尝试删除周末并始终更新到最近的星期一,那么这是CASE 的一种方式:
update YourTable
set Field2 =
case
when datepart(dw,Field1) = 1 then dateadd(day,1,Field1)
when datepart(dw,Field1) = 7 then dateadd(day,2,Field1)
else dateadd(day,1,Field1)
end
where Field1 is not null
【讨论】: