Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在AX查询服务中格式化日期时间比较值_C#_Web Services_Axapta_Dynamics Ax 2012 - Fatal编程技术网

C# 如何在AX查询服务中格式化日期时间比较值

C# 如何在AX查询服务中格式化日期时间比较值,c#,web-services,axapta,dynamics-ax-2012,C#,Web Services,Axapta,Dynamics Ax 2012,我正在使用Dynamics AX 2012 R2查询服务,需要对CustTable的ModifiedDataTime字段进行筛选(设置范围)。我正在创建QueryDataRangeMata对象并设置其属性。我可以正确过滤整数值,但不能过滤日期时间 我能够计算出比较运算符实际上嵌入了值。我已经用整型字段对此进行了测试,它确实适用于,但我还没有弄清楚如何格式化日期时间值,以便对其进行正确计算。下面的代码不起作用。该范围将被忽略,并返回CustTable中的所有记录 public static

我正在使用Dynamics AX 2012 R2查询服务,需要对CustTable的ModifiedDataTime字段进行筛选(设置范围)。我正在创建QueryDataRangeMata对象并设置其属性。我可以正确过滤整数值,但不能过滤日期时间

我能够计算出比较运算符实际上嵌入了值。我已经用整型字段对此进行了测试,它确实适用于,但我还没有弄清楚如何格式化日期时间值,以便对其进行正确计算。下面的代码不起作用。该范围将被忽略,并返回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);
    }

有人知道在这种情况下DateTime的格式应该是什么吗?

在迭代了一系列DateTime格式变体之后,我刚刚从UI复制并粘贴了一个值,猜猜怎么着?成功了。以下是代码片段:

        var range = new QueryDataRangeMetadata
        {
            TableName = "CustTable",
            FieldName = "modifiedDateTime",
            Value = ">2/5/2013 9:17:33 PM",
            Enabled = true
        };
因此,格式似乎是:
comparison\u operator mm/DD/YYYY hh:mm:ss AM


我在美国,格式是一月一日。我想其他地区的格式可能会有所不同,例如,day first。

如果用户从设置更改日期格式,该怎么办。您的代码将停止运行。。。。你找到其他解决方案了吗?@SaboorAwan:OP和答案中的代码片段是硬编码的,但为了简单起见。对于生产,您将使用用户的区域性来格式化。更好的是,您应该使用UTC日期时间和文字:
        var range = new QueryDataRangeMetadata
        {
            TableName = "CustTable",
            FieldName = "modifiedDateTime",
            Value = ">2/5/2013 9:17:33 PM",
            Enabled = true
        };