【问题标题】:Type mismatch in expression 'System.Data.UnaryNode'表达式“System.Data.UnaryNode”中的类型不匹配
【发布时间】:2015-05-19 08:51:48
【问题描述】:

我有一个数据表,其中包含一个列 (strDate),其中包含“20150519”之类的值。 我想在数据表中创建一个新的 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."

【问题讨论】:

    标签: c# datatable substring unary-operator datacolumn


    【解决方案1】:

    这个解决方案最终对我有用。 请注意,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')";
    

    【讨论】:

      猜你喜欢
      • 2020-02-17
      • 1970-01-01
      • 2019-09-26
      • 2017-05-15
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多