我正在使用 Dynamics AX 2012 R2 查询服务,需要对 CustTable 的 modifiedDateTime 字段进行过滤(设置范围)。我正在创建一个 QueryDataRangeMetadata 对象并设置它的属性。我可以正确过滤整数值,但不能过滤 DateTimes。
我能够弄清楚比较运算符实际上嵌入了该值。我已经用整数字段对此进行了测试,它确实适用,但我无法弄清楚如何格式化 DateTime 值以便正确评估它。下面的代码不起作用。该范围被简单地忽略并返回 CustTable 中的所有记录。
public static void RangeTest()
{
var client = new QueryServiceClient();
var dataSource = new QueryDataSourceMetadata
{
Table = "CustTable",
Name = "CustTable",
HasRelations = false,
Enabled = true,
DynamicFieldList = true // get all fields
};
var range = new QueryDataRangeMetadata
{
TableName = "CustTable",
FieldName = "modifiedDateTime",
Value = ">2013-02-05T21:17:33Z", // <-- ISSUE: notice the operator with the value!
Enabled = true
};
dataSource.Ranges = new QueryRangeMetadata[] { range };
var sort = new QueryDataOrderByMetadata
{
DataSource = "CustTable",
FieldName = "modifiedDateTime",
SortOrder = SortOrder.Ascending
};
var query = new QueryMetadata
{
QueryType = QueryType.Join,
DataSources = new[] { dataSource },
OrderByFields = new QueryOrderByMetadata[] { sort }
};
Paging paging = null;
var dataSet = client.ExecuteQuery(query, ref paging);
Console.WriteLine(dataSet.Tables[0].Rows.Count);
}
我也尝试了这些格式变化,但没有成功:
Value = ">2013-02-05 21:17:33"
Value = ">2013-02-05T9:17:33"
Value = ">'2013-02-05T9:17:33'"
Value = ">2013-02-05T21:17:33Z"
任何人都知道在这种情况下 DateTime 的格式应该是什么?