Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Den här funktionen, som lades till i version 5.6.0, är endast giltig när du använder PDO_SQLSRV drivrutinen för Microsoft Drivers for PHP för SQL Server.
Hämta datum- och tidstyper som DateTime-objekt
När du använder PDO_SQLSRV returneras datum- och tidstyper (smalldatetime, datetime, date, time, datetime2 och datetimeoffset) som standard som strängar. Varken attributet PDO::ATTR_STRINGIFY_FETCHES eller PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE har någon effekt. För att hämta datum- och tidstyper som PHP DateTime-objekt anger du anslutnings- eller instruktionsattributet PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE till sant (det är falskt som standard).
Anmärkning
Det här anslutnings- eller instruktionsattributet gäller endast för vanlig hämtning av datum- och tidstyper eftersom DateTime-objekt inte kan anges som utdataparametrar.
Exempel – använd anslutningsattributet
I följande exempel utelämnas felkontroll för tydlighetens skull. Den här visar hur du anger anslutningsattributet:
<?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);
?>
Exempel – använd attributet 'uttryck'
Det här exemplet visar hur du anger instruktionsattributet:
<?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);
?>
Exempel – använd instruktionsalternativet
Alternativt kan instruktionsattributet anges som ett alternativ:
<?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);
?>
Exempel: hämta "datetime"-typer som strängar
I följande exempel visas hur du uppnår motsatsen (vilket egentligen inte är nödvändigt eftersom det är falskt som standard):
<?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);
?>
Se även
Hämta datum- och tidstyper som strängar med hjälp av SQLSRV-drivrutinen