Como recuperar tipos de data e hora como cadeias de caracteres usando o driver SQLSRV
Ao usar o driver SQLSRV para o Drivers da Microsoft para PHP para SQL Server, você pode recuperar tipos de data e hora (smalldatetime, datetime, date, time, datetime2 e datetimeoffset) como cadeias de caracteres especificando a seguinte opção na cadeia de conexão ou no nível de instrução:
'ReturnDatesAsStrings'=>true
O padrão é false, o que significa que os tipos smalldatetime, datetime, date, time, datetime2 e dateTimeOffset serão retornados como objetos Datetime do PHP. Se essa opção for definida no nível de instrução, ela substituirá a configuração de nível de conexão.
O driver PDO_SQLSRV retorna tipos de data e hora como cadeias de caracteres por padrão. Para recuperá-los como objetos DateTime de PHP, confira Como recuperar tipos de data e hora como objetos datetime PHP usando o PDO_SQLSRV
Exemplo 1
O exemplo a seguir mostra a sintaxe especificando a recuperação dos tipos de data e hora como cadeias de caracteres.
<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks", 'ReturnDatesAsStrings'=> true);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_close($conn);
?>
Exemplo 2
O exemplo a seguir mostra que você pode recuperar datas como cadeias de caracteres especificando UTF-8 quando recuperar a cadeia de caracteres, mesmo quando a conexão tiver sido feita com "ReturnDatesAsStrings" => false
.
<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks", "ReturnDatesAsStrings" => false);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$tsql = "SELECT VersionDate FROM AWBuildVersion";
$stmt = sqlsrv_query($conn, $tsql);
if ($stmt === false) {
echo "Error in statement preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_fetch($stmt);
// retrieve date as string
$date = sqlsrv_get_field($stmt, 0, SQLSRV_PHPTYPE_STRING("UTF-8"));
if ($date === false) {
die(print_r(sqlsrv_errors(), true));
}
echo $date;
sqlsrv_close($conn);
?>
Exemplo 3
O exemplo a seguir mostra como recuperar datas como cadeias de caracteres especificando UTF-8 e "ReturnDatesAsStrings" => true
na cadeia de conexão.
<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks", 'ReturnDatesAsStrings'=> true, "CharacterSet" => 'utf-8');
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$tsql = "SELECT VersionDate FROM AWBuildVersion";
$stmt = sqlsrv_query($conn, $tsql);
if ($stmt === false) {
echo "Error in statement preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_fetch($stmt);
// retrieve date as string
$date = sqlsrv_get_field($stmt, 0);
if ($date === false) {
die(print_r(sqlsrv_errors(), true));
}
echo $date;
sqlsrv_close($conn);
?>
Exemplo 4
O exemplo a seguir mostra como recuperar a data como um tipo do PHP. 'ReturnDatesAsStrings'=> false
está ativado por padrão.
<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$tsql = "SELECT VersionDate FROM AWBuildVersion";
$stmt = sqlsrv_query($conn, $tsql);
if ($stmt === false) {
echo "Error in statement preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_fetch($stmt);
// retrieve date as a DateTime object, then convert to string using PHP's date_format function
$date = sqlsrv_get_field($stmt, 0);
if ($date === false) {
die(print_r(sqlsrv_errors(), true));
}
$date_string = date_format($date, 'jS, F Y');
echo "Date = $date_string\n";
sqlsrv_close($conn);
?>
Exemplo 5
A opção ReturnDatesAsStrings no nível de instrução substitui a opção de conexão correspondente.
<?php
$serverName = 'MyServer';
$connectionInfo = array('Database' => 'MyDatabase', 'ReturnDatesAsStrings' => false);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$tableName = 'MyTable';
$options = array('ReturnDatesAsStrings' => true);
$query = "SELECT DateTimeCol FROM $tableName";
$stmt = sqlsrv_prepare($conn, $query, array(), $options);
if ($stmt === false) {
echo "Error in statement preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_execute($stmt);
// Expect the fetched value to be a string
$field = sqlsrv_get_field($stmt, 0);
echo $field . PHP_EOL;
sqlsrv_close($conn);
?>
Consulte Também
Como recuperar tipos de data e hora como objetos datetime PHP usando o PDO_SQLSRV