表达式中的类型不匹配 'System.Data.UnaryNode'
Type mismatch in expression 'System.Data.UnaryNode'
我有一个数据 table,其列 (strDate) 包含类似“20150519”的值。
我想在数据 table 中创建一个新的 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."
这个解决方案最终对我有用。
请注意,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')";
我有一个数据 table,其列 (strDate) 包含类似“20150519”的值。 我想在数据 table 中创建一个新的 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."
这个解决方案最终对我有用。 请注意,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')";