Sharepoint日期差异

时间:2013-10-02 17:34:26

标签: sharepoint

我在Sharepoint中遇到问题。我有一个包含两列的列表,[开始日期]和[结束日期]。我创建了一个新列,一个计算字段,我希望看到两个日期之间的天数差异,例如15(仅限天数)。问题是[结束日期]可能为空,所以这个新列应该不是空的,但是应该计算今天的日期 - 开始日期,并且应该每天自动更新,直到没有输入结束日期。任何帮助都将受到高度赞赏。谢谢提前。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

几个月前,我遇到了同样的问题:使用&TANDAY'更新计算列。 (以及日期的差异)。 主要问题: 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()

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