【问题标题】:How to get last modified time of a document in sharepoint?如何在sharepoint中获取文档的最后修改时间?
【发布时间】:2009-09-17 07:11:46
【问题描述】:

如何转换 MssCrawlUrl 表的 LastModifiedTime 值?

我试过下面的查询,

Select CAST(LastModifiedTime as datetime)
From MssCrawlUrl Where DisplayURL like '<DisplayURL>'

但它给出了一个错误

'将表达式转换为数据类型日期时间时出现算术溢出错误。'

【问题讨论】:

    标签: sharepoint sharepoint-2007


    【解决方案1】:

    不支持直接查询 SharePoint 数据库。您必须使用 API。除了官方的“不支持”原因外,它还可能导致锁定、返回不正确的数据,并且自定义查询可能会在服务包或产品版本之间中断。请参阅 Mike Fitz 在 Microsoft 时的帖子 Please Stay Out Of The Database!

    有关如何使用受支持 API 的示例,请参阅此 Visual How To。另请参阅these articles on MSDN 和这篇best practices 文章了解更多信息。

    【讨论】:

    • 没错,即使是简单的 SELECT 也可以在表上加锁,这可能会导致实际站点本身/本身出现不可预见的结果。
    • 我知道如何使用 SharePoint API 做到这一点。我想要的是查询数据库。你试图解释的很好。我完全理解你的担心。我会照顾数据库的一致性。您知道如何在查询的帮助下直接从数据库中获取文档的 lastmodifieddate 吗?
    • @Ravi:好的,我看到你昨天问了一个类似的问题,我给出了相同的答案。如果您绝对必须这样做,请在任何地方使用 NOLOCK 或等效项。从模式中可以看出,它存储为 bigint。在 .NET 中,它可能与 DateTime(Int64) 构造函数一起使用。无法在 Transact-SQL 中进行转换,抱歉。
    【解决方案2】:

    我知道了

    DECLARE @dt AS bigint
    SET @dt = <BIGINT>
    SELECT DATEADD(ms, (@dt / CAST(10000 AS bigint)) % 86400000,
    DATEADD(day, @dt / CAST(864000000000 AS bigint) - 109207, 0))
    

    【讨论】:

      猜你喜欢
      • 2010-10-05
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多