2016-09-29 2 views
0

그래서 C#의 매개 변수 집합을 SqlCommand으로 전달하는 문제가 발생했습니다. 2016년 8월 30일 비교 대상을 SqlCommand와 어떻게 비교할 수 있습니까?

  • 에 : 결과가 SQL을 사용하여 9월 1일 2016

    에서 데이터를 포함하는 8월 31일 그러나

  • 2016 내 테스트 시나리오는 다음과 날짜를

    • 에서

      참여 서버 프로파일 러 SQL 쿼리로 들어가는 날짜가 2016-08-31 23:59:59 대신 '2016-09-01 00:00:00'임을 알 수 있습니다. 여기

      는 관련 C의 #은 C#을 그것을 SQL로 보내는 날짜를 변경하는 원인이 될 것입니다 무엇
      if (request.DateStart != DateTime.MinValue) 
          command.Parameters.Add(new SqlParameter("@dateStart", request.DateStart)); 
      
      if (request.DateEnd != DateTime.MinValue) 
          command.Parameters.Add(new SqlParameter("@dateEnd", request.DateEnd)); 
      

      니펫입니까?

    답변

    1

    그래서 프런트 엔드에서 endon을 API의 DateEnd 매개 변수에 보내는 데는 (~) 순간을 사용했습니다. 문제는 '2016-08-31 23 : 59 : 59 : 9990'의 날짜가 끝나는 것입니다. 이것은 단지 SQL의 datetime 타입보다 정밀도가 높기 때문에 C#이 유용하게 날짜 값을 '2016-09-01 00:00:00'으로 반올림합니다.

    프런트 엔드 코드를 다음과 같이 변경 했으므로 문제가 해결되었습니다. 이 경우 너무 많은 정밀도와 같은 것이 있음이 밝혀졌습니다.

    moment(filter.dateEnd).add(1, 'day').add(-1, 'second') 
    
    +0

    "59 : 59 : 59 : 9990"시간을 만들면 하루 24 시간 (60 시간이 아님)이므로 유효하지 않습니다. – juharr

    +0

    질문에 똑같은 문제가 있습니다. – juharr

    관련 문제