【问题标题】:Sharepoint Date DifferenceSharepoint 日期差异
【发布时间】:2018-05-09 02:47:48
【问题描述】:

我在 Sharepoint 中遇到问题。我有一个包含两列的列表,[开始日期] 和 [结束日期]。我创建了一个新列,一个计算字段,我想在其中查看两个日期之间的差异天数,例如 15(仅天数)。问题是 [结束日期] 可能为空,因此此新列不应为空,但应计算今天的日期 - 开始日期,并应每天自动更新,直到未输入结束日期。任何帮助将不胜感激。谢谢提前。

【问题讨论】:

    标签: sharepoint


    【解决方案1】:

    计算字段可以使用以下公式:

     =IF(ISBLANK(enddate),(Today-startdate),(enddate-startdate))
    

    上述计算基于当前更新项目的日期。计算的字段在项目本身更新之前不会更新。 以下链接可能会帮助您满足每天更新字段的要求。

    http://blog.pathtosharepoint.com/2008/08/14/calculated-columns-the-useless-today-trick/

    【讨论】:

    • 谢谢,它成功了。只是想看看它是否会自动改变天数 tomm。
    • 但差异不会在第二天自动更新。即是的,那个问题的日期差是 10 天,所以今天应该显示 11 天的差,但它只显示 10 天。请您突出显示更改。谢谢。
    • 如上所述,计算字段在项目本身更新之前不会更新。您可以使用计时器作业每天运行一次来​​更新列值。
    【解决方案2】:

    几个月前,我遇到了同样的问题:使用“TODAY”(以及日期差异)更新计算列。 主要问题:SharePoint 在项目更改之前不会重新计算值。恕我直言,更新(更改)列表的所有项目以重新计算字段并不是一个好主意。
    我找到了一种强制 SharePoint 更新我想要的计算列的方法(不更新列表的每个项目):

    使用 PowerShell 脚本更新计算字段

    我每天早上(按计划)使用 PowerShell 脚本更新计算列表字段(所以我每天都有实际值):

    $calculatedField.Update()
    

    代码的执行仅持续 10-20 秒(包含数千条记录和 3 个计算列的列表)。 这不会导致项目更改(不影响最后更改的日期)


    我的脚本全文:

    Add-PSSnapin Microsoft.SharePoint.PowerShell
    $webURL = "http://your.site"
    $web = get-spweb($webURL)
    
    # I have 3 calculated columns, so I prefer to use an array:
    [string[]] $arrFieldName = @("ExecDateFact", "ExecDateDiff", "Substatus")
    # get list:
    $list = $web.GetList($web.url+"/Lists/" + "your_list_name")
    # get fields of the list:
    $listFields = $list.Fields
    
    # update each calculated field:
    foreach ($fldName in $arrFieldName) {
        $listFields.GetFieldByInternalName($fldName).Update()
    }
    # release resources:
    $web.Dispose()
    

    我在任何地方都没有看到这种方法,所以我写了这个答案,希望这会对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-26
      • 2022-01-19
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多