Type mismatch in expression 'System.Data.UnaryNode'

本文关键字:Data UnaryNode System mismatch Type in expression | 更新日期: 2023-09-27 17:49:45

我有一个包含'20150519'等值的列(strDate)的数据表。我想在数据表中创建一个新的DateTime列(不使用循环),它包含strDate的日期表示。

我试过了:

table.Columns.Add("NewDate", typeof(DateTime)).Expression = 
            "CONVERT((SUBSTRING(strDate, 0, 5) + '/' + 
                      SUBSTRING(strDate, 5, 2) +  + '/' + 
                      SUBSTRING(strDate, 7, 2)), 'System.DateTime')";

但是它给出了一个错误:Type mismatch in expression 'System.Data.UnaryNode'

这里的一个潜在问题是:这里使用了什么Substring函数?SQL还是。net ?从文档中我了解到它不是SQL。但是。net的Substring是一元操作符(这是内联的错误消息),但我认为我的语句应该看起来像:

table.Columns.Add("NewDate", typeof(DateTime)).Expression = 
           "CONVERT((strDate).Substring(0, 4) + '/' + 
                    (strDate).Substring(4, 2) + '/' + 
                    (strDate).Substring(6, 2), 'System.DateTime')";

,然后产生错误:

"Cannot interpret token '.' at position 21."

Type mismatch in expression 'System.Data.UnaryNode'

这个解决方案最终对我有效。注意,Substring不是基于0的,因此我假设它是Substring的SQL版本。

table.Columns.Add("ChangeDate", typeof(DateTime)).Expression = 
                  "CONVERT(SUBSTRING([APO_CHDATE], 1, 4) + '/' + 
                           SUBSTRING([APO_CHDATE], 5, 2) + '/' + 
                           SUBSTRING([APO_CHDATE], 7, 2), 'System.DateTime')";
相关文章: