2014-01-28 3 views
2

감소 도착하면, 상기 코드 currentUpdatedUTC에서 내 C# 코드날짜 시간은 1 초 여기

try 
{ 
    Database db = DatabaseFactory.CreateDatabase(); 

    string sqlCommand = Constants.GET_UPDATE_STATUS; ; 
    DbCommand dbCommandWrapper = db.GetStoredProcCommand(sqlCommand); 

    db.AddParameter(
     dbCommandWrapper, 
     "@p_CurrentUpdatedUTCTime", 
     DbType.DateTime2, 
     ParameterDirection.InputOutput, 
     null, 
     DataRowVersion.Current, 
     _myDateTime); 

    db.AddOutParameter(dbCommandWrapper, "@p_UpdateStatus", DbType.Int16, 10); 
    db.ExecuteNonQuery(dbCommandWrapper); 
    status = 
     Convert.ToInt16(db.GetParameterValue(dbCommandWrapper, "@p_UpdateStatus")); 
    currentUpdatedUTC = 
     db.GetParameterValue(dbCommandWrapper, "@p_CurrentUpdatedUTCTime").ToString(); 
} 
catch (Exception exp) 
{ 
    errorMessage = exp.Message; 
    throw new DataAccessException(exp.Message, "UpdateStatusDAL", "GetUpdateStatus", exp); 
} 

의 부분 인 것은 내가 SQL에서 같은 판독있어 날짜이다. 잘 작동하지만 SQL에서 읽는 시간에는 1 초 차이가 있습니다. 예를 들어 난 SQL 절차가

2014-01-28T06:49:29 출력 실행할 경우하지만 C 번호에서 읽을 때 여기 2014-01-28T06:49:28 는 SQL 저장 프로 시저

@p_UpdateStatus SMALLINT OUTPUT, @p_CurrentUpdatedUTCTime DATETIME OUTPUT

+2

은 저장되는 밀리 초입니까? 그들은 초를 반올림 할 수 있습니다. –

+0

그래도 C# part rite에 전달해야합니까? – iJade

+1

은 정밀도에 따라 다릅니다. 이 기사에서 설명을 참조하십시오. http://milesquaretech.com/Blog/post/2011/09/12/DateTime-vs-DateTime2-SQL-is-Rounding-My-999-Milliseconds!.aspx –

답변

0

당신은 매개 변수를 정의하는 매개 변수이다 얻을 DbType.DateTime2이지만 저장 프로 시저에서는 정확도가 낮은 DATETIME을 사용하고 있습니다. 반올림이 발생할 수 있습니다.

저장 프로 시저 및 기본 SQL 테이블에 DATETIME2을 사용해보십시오.

또한 SQL Management Studio 또는 기본값 .ToString() 출력이 모두 T 인 ISO 형식을 사용하지 않으므로 사용자가 전체 이야기를 말하지는 않는다고 생각합니다. 아마도 실제 결과를 보여주기 위해 질문을 편집 할 수 있습니다.