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.
Wenn Sie den SQLSRV-Treiber für die Microsoft-Treiber für PHP für SQL Server verwenden, können Sie Datums- und Uhrzeittypen (smalldatetime, datetime, date, time, datetime2 und datetimeoffset) als Zeichenfolgen abrufen, indem Sie in der Verbindungszeichenfolge oder auf Anweisungsebene die folgenden Optionen festlegen:
'ReturnDatesAsStrings'=>true
Der Standardwert ist false, was bedeutet, dass die Typen smalldatetime, datetime, date, time, datetime2 und datetimeoffset als PHP DateTime-Objekte zurückgegeben werden. Wird diese Option auf Anweisungsebene festgelegt, werden die Einstellungen auf Verbindungsebene überschrieben.
Der PDO_SQLSRV-Treiber gibt Datums-und Uhrzeittypen standardmäßig als Zeichenfolgen zurück. Wenn Sie möchten, dass sie als PHP-DateTime-Objekte abgerufen werden, lesen Sie den Artikel Vorgehensweise: Abrufen von Datums- und Uhrzeittypen als PHP-DateTime-Objekte mit dem PDO_SQLSRV-Treiber
Beispiel 1
Das folgende Beispiel zeigt die Syntax, welche festlegt, dass die Datums- und Uhrzeittypen als Zeichenfolgen abgerufen werden.
<?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);
?>
Beispiel 2
Das folgende Beispiel zeigt, dass Sie verschiedene Datumsangaben als Zeichenfolge abrufen können, sofern Sie beim Abruf UTF-8 spezifizieren. Dies gilt auch, wenn die Verbindung mittels "ReturnDatesAsStrings" => false erstellt wurde.
<?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);
?>
Beispiel 3
Das folgende Beispiel zeigt, wie Datumsangaben als Zeichenfolgen abgerufen werden können, indem UTF-8 und "ReturnDatesAsStrings" => true in der Verbindungszeichenfolge spezifiziert werden.
<?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);
?>
Beispiel 4
Das folgende Beispiel zeigt, wie das Datum als PHP-Typ abgerufen wird.
'ReturnDatesAsStrings'=> false ist standardmäßig aktiviert.
<?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);
?>
Beispiel 5
Die Option ReturnDatesAsStrings auf Anweisungsebene überschreibt die entsprechende Verbindungsoption.
<?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);
?>
Weitere Informationen
Abrufen von Datums- und Uhrzeittypen als PHP-datetime-Objekte mit dem PDO_SSQLSRV-Treiber