Delen via


Procedure: Datum- en tijdtypen ophalen als PHP-datum/tijdobjecten met behulp van het PDO_SQLSRV-stuurprogramma

PHP-stuurprogramma downloaden

Deze functie, toegevoegd in versie 5.6.0, is alleen geldig wanneer u het PDO_SQLSRV-stuurprogramma gebruikt voor de Microsoft-stuurprogramma's voor PHP voor SQL Server.

Datum- en tijdtypen ophalen als DateTime-objecten

Wanneer u PDO_SQLSRV gebruikt, worden datum- en tijdtypen (smalldatetime, datum/tijd, datum, tijd, datum/tijd2 en datetimeoffset) standaard geretourneerd als tekenreeksen. Noch de PDO::ATTR_STRINGIFY_FETCHES noch het kenmerk PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE heeft enig effect. Als u datum- en tijdtypen wilt ophalen als PHP DateTime-objecten , stelt u het verbindings- of instructiekenmerk PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE in op waar (dit is standaard onwaar ).

Opmerking

Dit verbindings- of instructiekenmerk is alleen van toepassing op het regelmatig ophalen van datum- en tijdtypen, omdat Datum/tijd-objecten niet kunnen worden opgegeven als uitvoerparameters.

Voorbeeld: het verbindingskenmerk gebruiken

In de volgende voorbeelden wordt foutcontrole weggelaten voor duidelijkheid. In dit voorbeeld ziet u hoe u het verbindingskenmerk instelt:

<?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);
?>

Voorbeeld: de eigenschap 'statement' gebruiken

In dit voorbeeld ziet u hoe u het statementattribuut toevoegt.

<?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);
?>

Voorbeeld: opdrachtoptie gebruiken

U kunt het statementkenmerk ook als optie instellen.

<?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);
?>

Voorbeeld: datum/tijd-typen ophalen als tekenreeksen

In het volgende voorbeeld ziet u hoe u het tegenovergestelde bereikt (wat niet echt nodig is omdat deze standaard onwaar is):

<?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);
?>

Zie ook

Gegevens ophalen

Datum- en tijdtypen ophalen als tekenreeksen met behulp van het SQLSRV-stuurprogramma