Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Esta característica, agregada en la versión 5.6.0, solo es válida cuando se utiliza el controlador PDO_SQLSRV para dichos Controladores de Microsoft para PHP para SQL Server.
Para recuperar los tipos de fecha y hora como objetos DateTime
Al usar PDO_SQLSRV, los tipos de fecha y hora (smalldatetime, datetime, date, time, datetime2 y datetimeoffset) se devuelven de forma predeterminada como cadenas. Ni el atributo PDO::ATTR_STRINGIFY_FETCHES ni PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE tienen ningún efecto. Para recuperar los tipos de fecha y hora como objetos DateTime PHP, establezca el atributo de conexión o instrucción PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE en true (es false de forma predeterminada).
Nota
Este atributo de conexión o instrucción solo se aplica a la captura normal de tipos de fecha y hora, ya que los objetos DateTime no se pueden especificar como parámetros de salida.
Ejemplo: usar el atributo de conexión
En los siguientes ejemplos se omite la comprobación de errores para una mayor claridad. En este se muestra cómo establecer el atributo de conexión:
<?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);
?>
Ejemplo: usar el atributo de instrucción
En este ejemplo se muestra cómo establecer el atributo de instrucción:
<?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);
?>
Ejemplo: usar la opción de instrucción
Como alternativa, el atributo de instrucción se puede establecer como opción:
<?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);
?>
Ejemplo: recuperar los tipos de fecha y hora como cadenas
En el siguiente ejemplo se muestra cómo lograr lo contrario (que no es realmente necesario, puesto que es false de forma predeterminada):
<?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);
?>
Consulte también
Recuperación de los tipos de fecha y hora como cadenas con el controlador SQLSRV