Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Funktion wurde in Version 5.6.0 hinzugefügt und ist nur gültig, wenn Sie den PDO_SQLSRV-Treiber für die Microsoft-Treiber für PHP für SQL Server verwenden.
Abrufen von Datums- und Uhrzeittypen als DateTime-Objekte
Wenn Sie den PDO_SQLSRV-Treiber verwenden, werden Datums- und Uhrzeittypen (smalldatetime, datetime, date, time, datetime2 und datetimeoffset) standardmäßig als Zeichenfolge zurückgegeben. Weder das Attribut PDO::ATTR_STRINGIFY_FETCHES noch das Attribut PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE hat irgendeine Wirkung. Wenn Datums- und Uhrzeittypen als PHP-DateTime-Objekte abgerufen werden sollen, legen Sie für das Verbindungs- oder Anweisungsattribut PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE die Einstellung TRUE (wahr) fest. Standardmäßig ist FALSE (falsch) angegeben.
Hinweis
Dieses Verbindungs-oder Anweisungsattribut gilt nur für das reguläre Abrufen von Datums-und Uhrzeittypen, da DateTime-Objekte nicht als Ausgabeparameter angegeben werden können.
Beispiel: Verwenden des Verbindungsattributs
Aus Gründen der Übersichtlichkeit wird in den folgenden Beispielen die Prüfung auf Fehler weggelassen. Hier sehen Sie, welche Einstellungen für das Verbindungsattribut vorgenommen werden müssen:
<?php
$server = '<server>';
$databaseName = '<database>';
$username = '<user_id>';
$passwd = '<password>';
$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);
?>
Beispiel: Verwenden Sie das Attribut „statement“
Dieses Beispiel zeigt, wie das Statement-Attribut festgelegt wird:
<?php
$database = "<database>";
$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);
?>
Beispiel – Verwenden der Option „statement“
Alternativ kann das statement-Attribut als Option festgelegt werden:
<?php
$database = "<database>";
$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);
?>
Beispiel: Abrufen von datetime-Typen als Strings
Das folgende Beispiel zeigt, wie Sie das Gegenteil erreichen. Diese Funktion ist jedoch nicht wirklich nötig, da standardmäßig FALSE festgelegt ist:
<?php
$database = "<database>";
$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);
?>