Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ta funkcja, dodana w wersji 5.6.0, jest prawidłowa tylko w przypadku używania sterownika PDO_SQLSRV dla sterowników firmy Microsoft dla języka PHP dla programu SQL Server.
Aby pobrać typy dat i godzin jako obiekty DateTime
Podczas korzystania z PDO_SQLSRV, typy daty i czasu (smalldatetime, datetime, date, time, datetime2 i datetimeoffset) są domyślnie zwracane jako ciągi znaków. Ani atrybut PDO::ATTR_STRINGIFY_FETCHES, ani PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE nie mają żadnego wpływu. Aby pobrać typy daty i godziny jako obiekty PHP DateTime, ustaw atrybut połączenia bądź instrukcji na true (domyślnie wynosi false).
Uwaga / Notatka
Ten atrybut połączenia lub instrukcji dotyczy tylko zwykłego pobierania typów daty i godziny, ponieważ nie można określić obiektów DateTime jako parametrów wyjściowych.
Przykład — użyj atrybutu połączenia
W poniższych przykładach pominięto sprawdzanie błędów. W tym artykule pokazano, jak ustawić atrybut połączenia:
<?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);
?>
Przykład — użyj atrybutu „statement”
W tym przykładzie pokazano, jak ustawić atrybut deklaracji:
<?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);
?>
Przykład — użyj opcji wyrażenia
Alternatywnie atrybut instrukcji można ustawić jako opcję:
<?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);
?>
Przykład — pobieranie typów daty/godziny jako ciągów
W poniższym przykładzie pokazano, jak osiągnąć odwrotność (co nie jest naprawdę konieczne, ponieważ domyślnie jest to fałsz):
<?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);
?>
Zobacz też
Pobieranie typów daty i godziny jako ciągów przy użyciu sterownika SQLSRV