【问题标题】:How to set field2 = weekday +1如何设置field2 = weekday +1
【发布时间】:2013-07-16 08:54:23
【问题描述】:

我正在寻找在 Field1 不为空时自动将下一个工作日的日期输入到 Field2 中的代码。或者更准确地说,Field2 = Field1 + 1 个工作日

我使用 Access 2007 作为前端,使用 SQL 2008 作为后端。

任何帮助将不胜感激!

【问题讨论】:

    标签: sql vba ms-access ms-access-2007


    【解决方案1】:

    如果您要在 Access 中针对链接的 SQL Server 表运行查询,则该查询必须使用与 Access 兼容的 SQL。

    使Field2Field1 日期晚一天:

    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;
    

    【讨论】:

    • 谢谢两位的帮助!
    【解决方案2】:

    听起来您正在寻找带有DATEADDUPDATE 声明:

    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
    

    【讨论】:

      猜你喜欢
      • 2013-11-17
      • 2012-05-27
      • 2016-10-09
      • 1970-01-01
      • 2022-10-25
      • 2017-11-21
      • 2020-01-30
      • 2014-07-15
      • 1970-01-01
      相关资源
      最近更新 更多