DateTime
형식 매개 변수가있는 SQL 명령이있는 SQL Server 용 ADO.NET을 사용하여 레코드를 삭제하려고합니다. ADO.NET DateTime sql 매개 변수의 정확도가 손실됩니다.
using (var sqlConnection = new SqlConnection(...))
{
var command = sqlConnection.CreateCommand();
command.CommandText = string.Format("DELETE FROM [{0}] WHERE [email protected]", ...);
command.Parameters.Add(new SqlParameter("@UtcTimeStamp", DbType.DateTime2) { Value = exactTime });
sqlConnection.Open();
command.ExecuteNonQuery();
}
내가 예를 2014-12-22 04:53:21.9690398
의 exactTime
을 통과
UtcTimeStamp
값이 존재와 기록을 확인,하지만 난 내 코드를 실행 한 후 기록은 삭제되지 않습니다.
나는 SQL Profier에서 UtcTimeStamp
매개 변수가 2014-12-22 04:53:21.970
으로 구문 분석 된 것으로 확인 되었기 때문에 내 코드가 작동하지 않는 것으로 생각됩니다.
그래서 어떻게 구문 분석을 강제로 정확히 입력과 정확하게 일치시킬 수 있습니까? 이 유형은 DbType.DateTime
으로 당신이 그것을 저장하는 데이터베이스에이를 저장할 때 그래서 내가 생각 이 있는지 확인하십시오 (100)의 정확도로 나노초의 값을 반올림 때문에 그 형태가 DbType.DateTime2
입니다 데시벨이 vlaue을 저장할 때
ID와 같은 기본 키를 기반으로 레코드를 삭제하는 것이 좋습니다. 'Datetime'은 결코 레코드 삭제에 사용되지 않습니다. 데이터 필터 (보고서)의 경우에만 사용됩니다. –
@DimitarDimitrov 감사합니다,하지만 그것은 'Decimal' 유형에 사용됩니다. –
@DimitarDimitrov 흥미롭게도이 문서를 계속 보았습니다 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.scale(v=vs.110).aspx, 어쨌든 'Scale'을 시도했지만, 작동하지 않습니다. –