代码之家  ›  专栏  ›  技术社区  ›  Kit Menke

是否使用SharePoint搜索SQL将日期字段与“今日”进行比较?

  •  2
  • Kit Menke  · 技术社区  · 15 年前

    我正在将一些查询从caml转换为SharePoint搜索SQL,并在尝试将日期元数据字段与“今天”进行比较时遇到问题。

    具体来说,我在caml查询中使用了以下部分:

    <Leq><FieldRef Name="Article_x0020_Publish_x0020_Date"/><Value Type="DateTime"><Today /></Value></Leq>
    

    当尝试将其转换为SharePoint搜索SQL时,我遵循 microsoft documentation ;特别是 DATEADD documentation . 我想到了这个:

    SELECT Title, ArticlePublishDate FROM SCOPE() WHERE "SCOPE" = 'Articles' AND ArticlePublishDate <=DATEADD (DAY, 0, GETGMTDATE())
    

    但是,使用此查询时,会收到以下异常消息:

    名称不能以“=”开头 字符,十六进制值0x3d。 第1行,位置296。

    另外,如果将“<=”运算符更改为“>=”,则它接受查询:

    SELECT Title, ArticlePublishDate FROM SCOPE() WHERE "SCOPE" = 'Articles' AND ArticlePublishDate >=DATEADD (DAY, 0, GETGMTDATE())
    

    这是星期一的案子吗?微软是在耍我吗?或者这真的坏了…

    2 回复  |  直到 15 年前
        1
  •  2
  •   gbn    15 年前

    我怀疑这被视为XML:

    < =dateadd(day,0,getgmtdate())。

    规则 datatype precedence 意味着XML高于所有的日期时间值,所以这可能是原因。

    但是,很抱歉,我对SharePoint或CAML都不熟悉,因此无法提供修复程序。

        2
  •  0
  •   Chris    15 年前

    删除dateadd和'('帮助'之间的空格吗?-SQL解析器可能会在不使用(楔入)的情况下对其进行不同的处理。