gpt4 book ai didi

c# - 如何在 AX 查询服务中格式化 DateTime 比较值

转载 作者:行者123 更新时间:2023-11-30 17:06:48 25 4
gpt4 key购买 nike

我正在使用 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 的格式应该是什么吗?

最佳答案

在迭代了一堆 DateTime 格式变体之后,我只是从 UI 复制并粘贴了一个值,你猜怎么着?有效。这是片段:

        var range = new QueryDataRangeMetadata
{
TableName = "CustTable",
FieldName = "modifiedDateTime",
Value = ">2/5/2013 9:17:33 PM",
Enabled = true
};

所以格式好像是:comparison_operatorMM/DD/YYYY hh:mm:ss AM

我在美国,格式是月优先。我想其他语言环境必须采用不同的格式,例如第一天。

关于c# - 如何在 AX 查询服务中格式化 DateTime 比较值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15168047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com