Несоответствие типов в выражении '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')";
Другие вопросы по тегам