ASP.NET과 SQLKata를 활용하여 게임 개발을 하고 있다. 시스템 상에서 우편을 보내는 기능 개발 중, 결제된 상품을 포함한 우편을 전송할 때는 만료 기한을 무제한으로 설정해야 할 필요가 생겼다. 이는 우편이 만료 기한이 지남에 따라 자동 삭제되지 않게 하기 위해서였다. 이를 위해 DateTime.MaxValue를 우편 만료 기한으로 설정한 뒤, SQLKata로 삽입 쿼리를 넣었다. 그리고 예외 발생!
Visual Studio 상으로 확인했을 때 만료 기한의 값은 내가 의도한 DateTime.MaxValue의 값을 가리키고 있었다. 그렇다면 DateTime.MaxValue 값을 MySQL에 넣을 때 예외가 발생했다는 뜻인데...
DateTime.MaxValue는 9999년 12월 31일 23:59:59.999999이므로 MySQL DATETIME의 최댓값인 9999-12-31 23:59:59를 초과한다. Exception은 다음과 같다.
이를 해결하기 위해 9999년 12월 31일 23:59:59 값을 SQLKata를 활용하여 MySQL DATETIME 형식에 넣어보았다. 그리고 성공했다.
결과적으로, 만료 기한의 값을 9999-12-31 23:59:59로 한다면 현재로서는 이 문제가 해결된다. 나같은 경우는 Convert.ToDateTime(DateTime.MaxValue.ToString("yyyy-MM-dd HH:mm:ss"))로 해당 값을 만들었다.
추가적으로, C#의 DateTime 필드는 0001년 1월 1일 00:00:00.00000000~9999년 12월 31일 23:59:59.999999 값을 지원한다.
'Framework > .NET' 카테고리의 다른 글
ASP.NET에서의 MySQL VS Redis (0) | 2023.05.03 |
---|---|
[ASP.NET Core로 Web API 만들기] 2. SqlKata로 비동기 CRUD 구현하기 (0) | 2023.04.25 |
[ASP.NET Core로 Web API 만들기] 1. ASP.NET Core에 대해 (0) | 2023.04.22 |