Maison > base de données > tutoriel mysql > Comment gérer les valeurs DATETIME « 0000-00-00 00:00:00 » dans JDBC ?

Comment gérer les valeurs DATETIME « 0000-00-00 00:00:00 » dans JDBC ?

Linda Hamilton
Libérer: 2025-01-03 15:46:39
original
934 Les gens l'ont consulté

How to Handle

Gestion des valeurs DATETIME "0000-00-00 00:00:00" dans JDBC

Lors de la récupération des valeurs DATETIME d'une base de données MySQL à l'aide JDBC, vous pouvez rencontrer une exception si la valeur est définie sur la valeur quasi nulle de "0000-00-00 00:00:00". Ce problème survient lorsque vous tentez de récupérer la valeur sous forme de chaîne à l'aide de resultset.getString("add_date"), même si l'intention est d'obtenir une chaîne brute.

Solution alternative

Une solution de contournement à ce problème consiste à utiliser la requête SQL suivante :

SELECT CAST(add_date AS CHAR) as add_date
Copier après la connexion

Cette requête convertit la valeur DATETIME en un CHAR, en garantissant qu'il est récupéré sous forme de chaîne. Cependant, elle est considérée comme une solution moins optimale en raison de ses exigences de traitement supplémentaires.

Configuration de l'URL JDBC

Une approche alternative consiste à configurer l'URL JDBC directement dans votre source de données. configuration :

jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull
Copier après la connexion

En définissant la propriété zeroDateTimeBehavior sur convertToNull, vous demandez au pilote JDBC de convertir le valeurs DATETIME entièrement nulles sur NULL au lieu de lever une exception.

Source et options supplémentaires

Le manuel MySQL officiel fournit plus d'informations sur la façon de gérer DATETIME entièrement nul. valeurs dans Connecteur/J :

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

Selon Selon le manuel, les versions 3.0.x de Connector/J convertissaient les valeurs DATETIME entièrement nulles en NULL par défaut. Cependant, dans la version 3.1, le comportement par défaut a été modifié pour lancer une exception. La propriété zeroDateTimeBehavior vous permet de personnaliser ce comportement en spécifiant l'une des options suivantes :

  • exception (par défaut) : lancer une exception avec SQLState S1009.
  • convertToNull : convertir la valeur en NULL.
  • arrondi : Arrondissez la date à la valeur la plus proche, qui est 0001-01-01.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal