Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Esta funcionalidade, adicionada na versão 5.6.0, só é válida quando se utiliza o driver PDO_SQLSRV para os Microsoft Drivers para PHP para SQL Server.
Para recuperar tipos de data e hora como objetos DateTime
Ao usar PDO_SQLSRV, os tipos de data e hora (smalldatetime, datetime, datetime, time, datetime2 e datetimeoffset) são por defeito devolvidos como strings. Nem o atributo PDO::ATTR_STRINGIFY_FETCHES nem o atributo PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE têm qualquer efeito. Para recuperar os tipos de data e hora como objetos PHP DateTime, defina o atributo de conexão ou de instrução PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE como true (false por defeito).
Observação
Este atributo de ligação ou instrução aplica-se apenas à busca regular de tipos de data e hora porque os objetos DateTime não podem ser especificados como parâmetros de saída.
Exemplo - usar o atributo conexão
Os exemplos seguintes omitem a verificação de erros para maior clareza. Este mostra como definir o atributo de conexão:
<?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);
?>
Exemplo - usar o atributo 'statement'.
Este exemplo mostra como definir o atributo da instrução:
<?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);
?>
Exemplo - usar a opção de declaração
Alternativamente, o atributo da instrução pode ser definido como uma opção:
<?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);
?>
Exemplo - recuperar tipos de data-hora como cadeias de caracteres
O exemplo seguinte mostra como conseguir o oposto (o que não é realmente necessário porque é falso por defeito):
<?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);
?>
Ver também
Recuperar os tipos de data e hora como strings usando o driver SQLSRV