Error code 모음/1. SQL errors

[MSSQL] varchar 데이터 형식을 datetime 데이터 형식으로 변환하는 중 값 범위를 벗어났습니다 에러

쟈누이 2024. 1. 10. 11:04
반응형

 

 

1. 에러 원인


에러의 원인은 의외로 쉽다. 

datetime 에서 설정한 값의 범위를 벗어났다는 것이다.

 

예를 들면, 2023-12-31 인데, 2023-12-32 등과 같이 날짜의 범위를 벗어나는 데이터가 존재할 경우

위와 같은 에러가 발생한다.

 

 

 

 

2. 해결 방법


try_cast 문을 사용하면 해결할 수 있다.

try_cast 문은 MSSQL 에서 캐스팅을 진행할 때, 해당 데이터 타입의 범위를 벗어나는 값이 존재하면

해당 값을 null 로 넣고 변환하는 함수이다.

 

 

 

3. 우려사항


아직 감은 잘 안잡히지만, 

정합성 검증과 같은 작업을 진행할 시 null 된 값들이 안잡힐 수 있으므로..

정합성이 잘 맞지 않을 수 있겟다라는 생각이 든다

 

 

 

4. 사용 방법


SELECT count(1)
FROM dbo.table_name
WHERE TRY_CAST(substring(dt_haha, 1, 8) AS datetime) = CONVERT(date, GETDATE()-1);

 

 

5. 참고 링크


1. chat GPT

- 에러를 치자마자 알려주었다.

- 너무 편했지만 한편으로는 GPT에 의존하는 것 같아서 무서움...정 안될때 GPT 를 이용하는 습관을 길러야겟다

 

 

2. Ms DOCS

https://learn.microsoft.com/ko-kr/sql/t-sql/functions/try-cast-transact-sql?view=sql-server-ver16

 

TRY_CAST(Transact-SQL) - SQL Server

캐스트에 성공하면 지정한 데이터 형식으로 캐스팅된 값을 반환합니다. 그렇지 않으면 Null을 반환합니다.

learn.microsoft.com

 

반응형