Position actuelle: Accueil> Derniers articles> Comment gérer les problèmes de formatage des dates dans les résultats de la requête lors de l'utilisation de mysqli_result :: fetch_column?

Comment gérer les problèmes de formatage des dates dans les résultats de la requête lors de l'utilisation de mysqli_result :: fetch_column?

gitbox 2025-05-26

1. Exemple de base: utilisez fetch_column pour obtenir le champ Date

Supposons que nous ayons un tableau appelé Events , où un champ Event_Date est de type DateTime.

 <?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$sql = "SELECT event_date FROM events WHERE id = 1";
$result = $mysqli->query($sql);

if ($result) {
    // Supprimer directement le champ Date
    $date = $result->fetch_column();
    echo "Format de date d&#39;origine: " . $date;
} else {
    echo "La requête a échoué: " . $mysqli->error;
}

$mysqli->close();
?>

La sortie peut être:

 Format de date d&#39;origine: 2025-05-23 14:30:00

2. Question: Comment formater les dates?

Si vous ne voulez que la partie de l'année, du mois et du jour "2025-05-23" , ou si vous souhaitez le sortir dans d'autres formats, tels que "23 mai 2025" , vous devez traiter les résultats.


3. Solution 1: Utilisez la classe DateTime de PHP pour le gérer

 <?php
$date = $result->fetch_column();

$dateObj = new DateTime($date);
// Format pour afficher uniquement l&#39;année, le mois, le jour
$formattedDate = $dateObj->format('Y-m-d');
echo "Date formatée: " . $formattedDate;
?>

Cela sort:

 Date formatée: 2025-05-23

ou:

 $formattedDate = $dateObj->format('d M Y');
echo "Date formatée: " . $formattedDate;

Sortir:

 Date formatée: 23 May 2025

4. Solution 2: Dates de format pendant la requête SQL

Si vous souhaitez que la base de données renvoie directement la chaîne formatée, vous pouvez utiliser la fonction DATE_FORMAT de MySQL:

 <?php
$sql = "SELECT DATE_FORMAT(event_date, '%Y-%m-%d') AS event_date FROM events WHERE id = 1";
$result = $mysqli->query($sql);

if ($result) {
    $date = $result->fetch_column();
    echo "SQL Date formatée: " . $date;
}
?>

Sortir:

 SQL Date formatée: 2025-05-23

5. Solution 3: Intercepter avec les fonctions de chaîne (non recommandée)

Bien que le substr peut être utilisé pour intercepter directement les 10 premiers caractères de la chaîne de date, il n'est pas suffisamment flexible et sujette aux erreurs.

 $date = $result->fetch_column();
$shortDate = substr($date, 0, 10);
echo "La date d&#39;interception: " . $shortDate;

Résumer

  • La date renvoyée par mysqli_result :: fetch_column est au format de chaîne et doit être convertie avant que la personnalisation puisse être personnalisée.

  • L'utilisation de PHP DateTime est la méthode recommandée, qui est à la fois flexible et sûre.

  • Il peut également être formaté directement dans des requêtes SQL pour réduire le traitement du côté PHP.

  • Évitez d'intercepter les dates avec les chaînes à moins qu'il ne soit déterminé que le format est stable.

Un choix raisonnable de méthodes de traitement peut rendre votre date à affaire plus conforme aux besoins de l'entreprise, tout en garantissant la maintenabilité et la robustesse du code.