Procédure : Récupérer des types date et heure sous forme de chaînes à l’aide du pilote SQLSRV

Télécharger le pilote PHP

Lorsque vous utilisez le pilote SQLSRV pour Pilotes Microsoft SQL Server pour PHP, vous pouvez récupérer les types date et heure (smalldatetime, datetime, date, time, datetime2 et datetimeoffset) en tant que chaînes en spécifiant l’option suivante dans la chaîne de connexion ou au niveau de l’instruction :

'ReturnDatesAsStrings'=>true

La valeur par défaut est false, ce qui signifie que les types smalldatetime, datetime, date, time, datetime2 et datetimeoffset sont retournés en tant qu’objets PHP DateTime. Si cette option est définie au niveau de l’instruction, elle remplace le paramètre de niveau de connexion.

Par défaut, le pilote PDO_SQLSRV retourne les types de date et heure sous forme de chaînes. Pour les récupérer en tant qu’objets DateTime PHP, consultez Procédure : récupérer des types date et heure sous forme d’objets datetime PHP à l’aide de PDO_SQLSRV

Exemple 1

L’exemple suivant montre la syntaxe permettant de récupérer des types de date et heure sous forme de chaînes.

<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks", 'ReturnDatesAsStrings'=> true);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
   echo "Could not connect.\n";
   die(print_r(sqlsrv_errors(), true));
}

sqlsrv_close($conn);
?>

Exemple 2

L’exemple suivant montre que vous pouvez récupérer des dates sous forme de chaînes en spécifiant UTF-8 lors de la récupération de la chaîne, même quand la connexion a été établie avec "ReturnDatesAsStrings" => false.

<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks", "ReturnDatesAsStrings" => false);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
   echo "Could not connect.\n";
   die(print_r(sqlsrv_errors(), true));
}

$tsql = "SELECT VersionDate FROM AWBuildVersion";

$stmt = sqlsrv_query($conn, $tsql);

if ($stmt === false) {
   echo "Error in statement preparation/execution.\n";
   die(print_r(sqlsrv_errors(), true));
}

sqlsrv_fetch($stmt);

// retrieve date as string
$date = sqlsrv_get_field($stmt, 0, SQLSRV_PHPTYPE_STRING("UTF-8"));

if ($date === false) {
   die(print_r(sqlsrv_errors(), true));
}

echo $date;

sqlsrv_close($conn);
?>

Exemple 3

L’exemple suivant montre comment récupérer des dates sous forme de chaînes en spécifiant UTF-8 et "ReturnDatesAsStrings" => true dans la chaîne de connexion.

<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks", 'ReturnDatesAsStrings'=> true, "CharacterSet" => 'utf-8');
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
   echo "Could not connect.\n";
   die(print_r(sqlsrv_errors(), true));
}

$tsql = "SELECT VersionDate FROM AWBuildVersion";

$stmt = sqlsrv_query($conn, $tsql);

if ($stmt === false) {
   echo "Error in statement preparation/execution.\n";
   die(print_r(sqlsrv_errors(), true));
}

sqlsrv_fetch($stmt);

// retrieve date as string
$date = sqlsrv_get_field($stmt, 0);

if ($date === false) {
   die(print_r(sqlsrv_errors(), true));
}

echo $date;
sqlsrv_close($conn);
?>

Exemple 4

L’exemple suivant montre comment récupérer la date sous la forme d’un type PHP. 'ReturnDatesAsStrings'=> false est activé par défaut.

<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
   echo "Could not connect.\n";
   die(print_r(sqlsrv_errors(), true));
}

$tsql = "SELECT VersionDate FROM AWBuildVersion";

$stmt = sqlsrv_query($conn, $tsql);

if ($stmt === false) {
   echo "Error in statement preparation/execution.\n";
   die(print_r(sqlsrv_errors(), true));
}

sqlsrv_fetch($stmt);

// retrieve date as a DateTime object, then convert to string using PHP's date_format function
$date = sqlsrv_get_field($stmt, 0);

if ($date === false) {
   die(print_r(sqlsrv_errors(), true));
}

$date_string = date_format($date, 'jS, F Y');
echo "Date = $date_string\n";

sqlsrv_close($conn);
?>

Exemple 5

L’option ReturnDatesAsStrings au niveau de l’instruction remplace l’option de connexion correspondante.

<?php
$serverName = 'MyServer';
$connectionInfo = array('Database' => 'MyDatabase', 'ReturnDatesAsStrings' => false);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
   echo "Could not connect.\n";
   die(print_r(sqlsrv_errors(), true));
}

$tableName = 'MyTable';
$options = array('ReturnDatesAsStrings' => true);
$query = "SELECT DateTimeCol FROM $tableName";
$stmt = sqlsrv_prepare($conn, $query, array(), $options);
if ($stmt === false) {
   echo "Error in statement preparation/execution.\n";
   die(print_r(sqlsrv_errors(), true));
}
sqlsrv_execute($stmt);

// Expect the fetched value to be a string
$field = sqlsrv_get_field($stmt, 0);
echo $field . PHP_EOL;

sqlsrv_close($conn);
?>

Voir aussi

Récupération de données

Procédure : récupérer des types date et heure sous forme d’objets à l’aide de PDO_SQLSRV