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. Die beiden Attribute PDO::ATTR_STRINGIFY_FETCHES und PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE ändern daran nichts. 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 = 'myserver';
$databaseName = 'mydatabase';
$username = 'myusername';
$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 des Anweisungsattributs
Hier sehen Sie, welche Einstellungen für das Anweisungsattribut vorgenommen werden müssen:
<?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);
?>
Beispiel: Verwenden der Anweisung als Option
Sie können das Anweisungsattribut auch als Option angeben:
<?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);
?>
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 = "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);
?>
Weitere Informationen
Abrufen von Datums- und Uhrzeittypen als Zeichenfolgen mit dem SQLSRV-Treiber