Я использую определяемый пользователем параметр таблицы для массовой вставки, я создаю определяемую пользователем таблицу, а имя столбца - ModifiedDate в типе данных для даты и времени.
когда я передаю значение в sql, оно будет вставлено нормально, но пропущено значение миллисекунд, тогда как я могу установить это
Моя пользовательская таблица
CREATE TYPE [dbo].[Test] AS TABLE(
[ModifiedDate] [datetime] NOT NULL,
)
My Sp
ALTER PROCEDURE [dbo].[CP_UpdateData]
-- Add the parameters for the stored procedure here
@Test Test Readonly,
INSERT into Test(ModifiedDate)
Values(ModifiedDate);
но здесь в моем значении даты и времени отсутствует миллисекунда, не могли бы вы помочь с любым предложением для решения этой проблемы
в коде С#
using (var cmd = new SqlCommand())
{
cmd.CommandText = "CP_UpdateData";
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("Test", SqlDbType.Structured).Value = ConvertToDataTable(list);
con.Open();
var dataReader = await cmd.ExecuteReaderAsync();
}
public DataTable ConvertToDataTableCampaingList(List<Test> list)
{
var dataTable = new DataTable();
if (list != null && list.Count > 0)
{
dataTable.Columns.Add("ModifiedDate", Type.GetType("System.DateTime"));
foreach (var data in list)
{
var dataRow = dataTable.NewRow();
dataRow["ModifiedDate"] = data.ModifiedDate;
dataTable.Rows.Add(dataRow);
}
}
return dataTable;
}
datetimeсервера sql составляет 3 миллисекунды. Если вам нужна точность в миллисекундах, вы должны использовать тип данныхTimeилиDateTime2. - person Zohar Peled   schedule 29.06.2016DATETIMEне имеет неявного формата, так что это может быть виновником здесь. В сочетании с рендерингом вашего компилятора по умолчаниюDATETIME. user2380844 ССЫЛКА имеет аналогичный вопрос, где ответ заключался в том, чтобы явно перевестиDATETIMEвstring(что, кстати, вы делаете и вSQL). - person clifton_h   schedule 29.06.2016DATETIME? Ваша БД или программа на C#? Что происходит, когда вы сначала переводите его в строку напрямую, как описано в ссылке? Если вы все еще получаете TRUNCATION значений, проверьте upstring в своем коде. - person clifton_h   schedule 29.06.2016DateTime.Nowв качестве значения для вставки в dataRow. Возможно,data.ModifiedDateуже имеет миллисекунды, установленные на 0? - person Zohar Peled   schedule 29.06.2016Type.GetTypeвместоtypeof(DateTime). Он также используетConvertToDataTable, но вы публикуете другой метод. Код хранимой процедуры тоже не компилируется - нельзя написатьVALUES(@Test ModifiedDate). Возможно, у вас есть еще одна опечатка, которая удаляет миллисекунды - person Panagiotis Kanavos   schedule 29.06.2016INSERT INTO ZZZ_TEMP_TABLE (ModifiedDate) SELECT ModifiedDate FROM @Test- person Zohar Peled   schedule 29.06.2016