【问题标题】:Concat columns adding data in datatable连接列在数据表中添加数据
【发布时间】:2011-05-05 11:16:27
【问题描述】:

由于某种原因,我从数据库中获取了一些数据,这些数据在年月和年中都有不同的日期,我想连接该列并添加一个新列。

我正在做的是添加数据

                    DataColumn newColumn;
                    newColumn = new DataColumn("CompositeDate");
                    newColumn.Expression = "Day + Month + Year" ;
                    scaleResponseData.Columns.Add(newColumn);

数据表中的数据是这样的

year | Month | Day
2009   10       2
2010   11       3

我当前的代码在做什么

year | Month | Day | composite_Date 
2009   10       2      2021
2010   11       3      2024

但结果应该是一些东西

year | Month | Day | composite_Date 
 2009   10     02      20091002
 2010   11     03      20101103

我有不同的组合,但没有任何效果

【问题讨论】:

    标签: c# .net asp.net date


    【解决方案1】:

    试试这个:

    newColumn.Expression = "Convert(Day , 'System.String') + Convert(Month , 'System.String') + Convert(Year, 'System.String')";
    

    【讨论】:

    • 它正在工作,但缺少一点我正在使用我的表达式 scaleID=105 和 CompositeDate 之间的列 '3/1/2009 6:01:23 PM' 和 '5/31/上面写的 2009 年 6:01:23 PM' 我收到一个错误表达式包含不受支持的运算符 'Between'。
    【解决方案2】:

    这是因为你的列是数字,三个数字相加会产生一个新数字。

    尝试通过在列之间包含一个空文本来强制表达式生成一个字符串:

    newColumn.Expression = "Day + '' + Month + '' + Year" ;
    

    【讨论】:

      【解决方案3】:

      Yoo 也可以像这样将其转换为“真实”的 DateTime 类型。

      newColumn.Expression = "Convert(Year + '/' + Month + '/' + Day, 'System.DateTime')";
      

      【讨论】:

        【解决方案4】:

        如果您在数据库中有年、月和日期作为整数,它们会以数字形式相加,例如: 年 = 2009,月 = 10,日 = 2 == 2009+10+2 = 2021,这是您当前的复合日期。

        你应该试试 年 * 10000 + 月 * 100 + 天得到你想要的结果 => newColumn.Expression = "Day + Month * 100 + Year * 10000" ;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-29
          • 2011-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多