我正在将我从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位。
另外,如果您将'&lt; ='运算符更改为'&gt; ='运算符,则它接受查询:
SELECT Title, ArticlePublishDate FROM SCOPE() WHERE "SCOPE" = 'Articles' AND ArticlePublishDate >=DATEADD (DAY, 0, GETGMTDATE())
这是星期一的情况吗?微软搞砸了我吗?或者这真的破了......
答案 0 :(得分:2)
这被视为xml我怀疑:
&lt; = DATEADD(DAY,0,GETGMTDATE())。
datatype precedence的规则意味着xml高于所有日期时间值,所以这可能是原因。
但是,我很抱歉,但我不熟悉Sharepoint或CAML,因此无法提供修复。
答案 1 :(得分:0)
删除DATEADD和'('help?)之间的空间 - SQL解析器可能会在没有它的情况下对它进行不同的处理(楔入它。