Несоответствие типов в выражении 'System.Data.UnaryNode'
У меня есть таблица данных со столбцом (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 является унарным оператором (который встроен в сообщение об ошибке), но тогда я думаю, что мое утверждение должно выглядеть следующим образом:
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."
1 ответ
Это решение в конечном итоге сработало для меня. Обратите внимание, что Substring не основана на 0, поэтому я предполагаю, что это SQL-версия Substring.
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')";