본문 바로가기

IT 관련/IT 기타

[ms-sql]varchar 데이터 형식을 datetime 데이터 형식으로 변환하는 중 값 범위를 벗어났습니다.

주문 쪽 오류를 확인하려고 로그를 살펴보던 중 'varchar 데이터 형식을 datetime 데이터 형식으로 변환하는 중 값 범위를 벗어났습니다.'라는 오류 로그가 엄청나게 발생한 것을 확인하였다.

확인 결과 쿼리의 where 조건의 날짜 파라미터가 잘못된 형식으로 전달될 경우에 발생하는 오류였다.

 

오류의 원인은 날짜 형식의 파라미터를 날짜 관련 DATE, DATETIME로 변환[CONVERT]하거나 비교했을 때 발생하는 오류였다.

 

예를 들면 2022-13-21과 같이 없는 월을 입력했을 때, 날짜 형식에 맞지 않을 때 발생한다.

- 존재하지 않는 '월'을 파라미터로 전달

SELECT COUNT(1) AS TOTAL_COUNT        
    FROM BD_MEMBER_COUNSEL A WITH(NOLOCK)    
  WHERE A.INQRY_DTM < '2021-13-12';

 

- 날짜로 변경할 수 없는 포멧 또는 일자를 세팅 했을 때

SELECT COUNT(1) AS TOTAL_COUNT        
    FROM BD_MEMBER_COUNSEL A WITH(NOLOCK)    
  WHERE A.INQRY_DTM BETWEEN CONVERT(DATETIME, CONCAT('2021-12-29', ' 00:00:00')) 
    AND CONVERT(DATETIME, CONCAT('2021-13-29', ' 23:59:59'));

 

날짜 형식에 맞게 존재하는 년월일 데이터를 넣어주면 해결된다.

 

그럼 이만.

끝.