我有一个包含列(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'
这里的一个基本问题是:这里使用了什么子串函数? 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."
答案 0 :(得分:0)
这个解决方案最终对我有用。 请注意,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')";