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
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
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 :
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!