반응형
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
반응형