>데이터 베이스 >MySQL 튜토리얼 >JDBC에서 '0000-00-00 00:00:00' DATETIME 값을 처리하는 방법은 무엇입니까?

JDBC에서 '0000-00-00 00:00:00' DATETIME 값을 처리하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-03 15:46:39888검색

How to Handle

JDBC에서 "0000-00-00 00:00:00" DATETIME 값 처리

다음을 사용하여 MySQL 데이터베이스에서 DATETIME 값을 검색하는 경우 JDBC의 경우 값이 준 널(quasi-null) 값으로 설정된 경우 예외가 발생할 수 있습니다. "0000-00-00 00:00:00". 이 문제는 원시 문자열을 얻으려는 의도에도 불구하고 resultset.getString("add_date")을 사용하여 값을 문자열로 검색하려고 할 때 발생합니다.

대체 해결 방법

이 문제의 해결 방법은 다음 SQL 쿼리를 사용하는 것입니다.

SELECT CAST(add_date AS CHAR) as add_date

이 쿼리는 DATETIME 값을 CHAR로 변환하여 문자열로 검색되도록 합니다. 그러나 추가 처리 요구 사항으로 인해 덜 최적의 솔루션으로 간주됩니다.

JDBC URL 구성

대체 접근 방식은 데이터 소스에서 JDBC URL을 직접 구성하는 것입니다. 구성:

jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull

zeroDateTimeBehavior 속성을 ConvertToNull로 설정하면 예외를 발생시키는 대신 모두 0인 DATETIME 값을 NULL로 변환하는 JDBC 드라이버입니다.

소스 및 추가 옵션

공식 MySQL 매뉴얼에서는 다음 방법에 대한 자세한 정보를 제공합니다. 모두 0인 DATETIME 값을 처리합니다. 커넥터/J:

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html#property_zeroDateTimeBehavior

에 따르면 설명서에 따르면 Connector/J 버전 3.0.x는 기본적으로 모두 0인 DATETIME 값을 NULL로 변환했습니다. 그러나 버전 3.1에서는 기본 동작이 예외를 발생시키는 것으로 변경되었습니다. zeroDateTimeBehavior 속성을 사용하면 다음 옵션 중 하나를 지정하여 이 동작을 사용자 지정할 수 있습니다.

  • 예외(기본값): SQLState S1009를 사용하여 예외를 발생시킵니다.
  • convertToNull: 값을 다음으로 변환합니다. NULL.
  • round: 날짜를 가장 가까운 값으로 반올림합니다. 0001-01-01.

위 내용은 JDBC에서 '0000-00-00 00:00:00' DATETIME 값을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.