Procédure : récupérer des types date et heure sous forme d’objets DateHeure PHP à l’aide du pilote PDO_SQLSRV
Cette fonctionnalité, ajoutée dans la version 5.6.0, est valide uniquement quand vous utilisez le pilote PDO_SQLSRV pour Pilotes Microsoft SQL Server pour PHP.
Pour récupérer des types de date et heure en tant qu’objets DateTime
Lors de l’utilisation de PDO_SQLSRV, les types de date et heure (smalldatetime, datetime, date, time, datetime2et datetimeoffset) sont renvoyés en tant que chaînes par défaut. Ni l’attribut PDO::ATTR_STRINGIFY_FETCHES ni l’attribut PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE n’ont d’effet. Pour récupérer des types de date et heure en tant qu’objets DateTime PHP, définissez l’attribut de connexion ou d’instruction PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE
sur true (il s’agit de false par défaut).
Notes
Cet attribut de connexion ou d’instruction s’applique uniquement à la récupération normale des types de date et heure, car les objets DateTime ne peuvent pas être spécifiés en tant que paramètres de sortie.
Exemple : utilisation de l’attribut de connexion
Les exemples suivants omettent la vérification des erreurs par souci de clarté. Celui-ci montre comment définir l’attribut de connexion :
<?php
$server = 'myserver';
$databaseName = 'mydatabase';
$username = 'myusername';
$passwd = 'mypasword';
$tableName = 'mytable';
$conn = new PDO("sqlsrv:Server = $server; Database = $databaseName", $username, $passwd);
// To set the connection attribute
$conn->setAttribute(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE, true);
$query = "SELECT DateTimeCol FROM $tableName";
$stmt = $conn->prepare($query);
$stmt->execute();
// Expect a DateTimeCol value as a PHP DateTime type
$row = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($row);
unset($stmt);
unset($conn);
?>
Exemple : utilisation de l’attribut d’instruction
Cet exemple montre comment définir l’attribut d’instruction :
<?php
$database = "test";
$server = "(local)";
$conn = new PDO("sqlsrv:server = $server; Database = $database", "", "");
$query = "SELECT DateTimeCol FROM myTable";
$stmt = $conn->prepare($query);
$stmt->setAttribute(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE, true);
$stmt->execute();
// Expect a DateTimeCol value as a PHP DateTime type
$row = $stmt->fetch(PDO::FETCH_NUM);
var_dump($row);
unset($stmt);
unset($conn);
?>
Exemple : utilisation de l’option d’instruction
L’attribut d’instruction peut également être défini en tant qu’option :
<?php
$database = "test";
$server = "(local)";
$conn = new PDO("sqlsrv:server = $server; Database = $database", "", "");
$dateObj = null;
$query = "SELECT DateTimeCol FROM aTable";
$options = array(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE => true);
$stmt = $conn->prepare($query, $options);
$stmt->execute();
$stmt->bindColumn(1, $dateObj, PDO::PARAM_LOB);
$row = $stmt->fetch(PDO::FETCH_BOUND);
var_dump($dateObj);
unset($stmt);
unset($conn);
?>
Exemple : récupérer des types datetime en tant que chaînes
L’exemple suivant montre comment obtenir l’inverse (ce qui n’est pas vraiment nécessaire, car il s’agit d’une valeur false par défaut) :
<?php
$database = "MyData";
$conn = new PDO("sqlsrv:server = (local); Database = $database");
$dateStr = null;
$query = 'SELECT DateTimeCol FROM table1';
$options = array(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE => false);
$stmt = $conn->prepare($query, $options);
$stmt->execute();
$stmt->bindColumn(1, $dateStr);
$row = $stmt->fetch(PDO::FETCH_BOUND);
echo $dateStr . PHP_EOL;
unset($stmt);
unset($conn);
?>
Voir aussi
Récupérer des types date et heure sous forme de chaînes à l’aide du pilote SQLSRV
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour