back end/java

[java] mssql(SQLServer)에서 datetime2 자료형 날짜 표시 2일 오차 발생하는 문제 해결방법

노루아부지 2023. 2. 9. 13:00
반응형

현상

  • datetime 자료형으로 설정된 컬럼은 문제없는데, datetime2로 설정된 컬럼을 JPA로 쿼리 하여 LocalDateTime에 넣었을 경우 날짜 2일 오차 발생
  • SSMS에서 같은 쿼리 실행 시, 날짜 정상 표시
  •  ex) 2023-02-09 00:00:00  -> 2023-02-07 00:00:00 으로 표시

 

환경

  • Windows Server 2016
  • SQLServer 2016
  • Spring boot
  • JPA

 

원인

java7이 포함된 SQL Server의 JDBC버전에 문제가 있습니다. 링크에는 3버전이 문제라고 되어있지만, 4 버전도 같은 문제가 있습니다.

https://support.microsoft.com/kb/2652061

 

KB2652061 - FIX: SQL Server JDBC Driver 3.0 returns incorrect date values when used with JRE 1.7 by a Java application - Microso

영어 죄송합니다. 이 문서는 귀하의 언어로 사용할 수 없습니다.

support.microsoft.com

 

 

해결방법

jdbc driver를 상위 버전을 사용합니다.

 

 

주의사항

프로젝트(프로그램)내에 상위 버전이 있더라도 jdk, windows system32 경로 등 우선순위가 더 높은 경로에 sqljdbc4.jar 와 같은 문제가 있는 드라이버가 존재한다면 그 버전을 읽습니다.

728x90
반응형
loading