Неясно, в чем именно заключается ваша ошибка, потому что ваш SQL должен работать нормально ( Демо здесь ) и не возвращать ошибку, хотя я не уверен, что вывод будет тем, что вы хотите, поскольку он просто объединяет все установленные даты в xml как одну длинную строку:
Как было сказано в моем предыдущем ответе, если у вас есть несколько установленных дат в строке, вы захотите использовать CROSS APPLY, чтобы установить установленные даты в виде отдельных строк.
демонстрационный SQL с использованием CROSS APPLY
Если вы действительно хотите, чтобы даты были объединены с одной строкой, я бы предложил использовать построитель строк, чтобы сделать это:
try
{
string query = @"SELECT InstalledDate = x.value('InstalledDate[1]', 'DATETIME')
FROM dbo.Test
CROSS APPLY PartInfo.nodes('/DocumentElement/PartInfo') p (x);";
using (var con = new SqlConnection("Data Source=NIP007\\SQLEXPRESS;Initial Catalog=test;User ID=sa;[email protected]!"))
using (var cmd = new SqlCommand(query, con))
{
con.Open();
using (var dr = cmd.ExecuteReader())
{
var builder = new StringBuilder();
while (dr.Read())
{
string str5 = dr.GetString(0);
if (!string.IsNullOrEmpty(str5))
{
builder.Append(str5 + ",");
}
}
textBox1.Text = builder.ToString();
}
}
}
catch (Exception ex)
{
}
Если это не поможет, вы можете отправить DDL вашего теста таблицы и некоторые примеры данных.
благодаря