php-sqlsrv/test/functional/sqlsrv/sqlsrv_fetch_datetime_as_strings.phpt

119 lines
3.3 KiB
Plaintext
Raw Normal View History

2017-03-08 23:17:21 +01:00
--TEST--
Test fetching datatime fields as strings
--FILE--
<?php
require_once('MsCommon.inc');
2017-03-08 23:17:21 +01:00
function FetchDateTime_AsString($conn)
{
$tableName = GetTempTableName();
$stmt = sqlsrv_query($conn, "CREATE TABLE $tableName ([c1_int] int, [c2_timestamp] timestamp, [c3_datetime] datetime, [c4_smalldatetime] smalldatetime)");
2017-03-08 23:17:21 +01:00
sqlsrv_free_stmt($stmt);
2017-03-08 23:17:21 +01:00
$numRows = 0;
$query = GetQuery($tableName, ++$numRows);
$stmt = sqlsrv_query($conn, $query);
sqlsrv_free_stmt($stmt);
2017-03-08 23:17:21 +01:00
$query = GetQuery($tableName, ++$numRows);
$stmt = sqlsrv_query($conn, $query);
sqlsrv_free_stmt($stmt);
2017-03-08 23:17:21 +01:00
$query = GetQuery($tableName, ++$numRows);
$stmt = sqlsrv_query($conn, $query);
sqlsrv_free_stmt($stmt);
2017-03-08 23:17:21 +01:00
$query = GetQuery($tableName, ++$numRows);
$stmt = sqlsrv_query($conn, $query);
sqlsrv_free_stmt($stmt);
2017-03-08 23:17:21 +01:00
$query = "SELECT [c3_datetime], [c4_smalldatetime] FROM $tableName ORDER BY c2_timestamp";
$stmt1 = sqlsrv_query($conn, $query);
$stmt2 = sqlsrv_query($conn, $query);
2017-03-08 23:17:21 +01:00
FetchData($stmt1, $stmt2, $numRows);
sqlsrv_free_stmt($stmt1);
sqlsrv_free_stmt($stmt2);
2017-03-08 23:17:21 +01:00
}
function FetchData($stmt1, $stmt2, $numRows)
{
$rowFetched = 0;
do {
$obj = sqlsrv_fetch_object($stmt1);
$row = sqlsrv_fetch_array($stmt2, SQLSRV_FETCH_ASSOC);
$value1 = $obj->c3_datetime;
$value2 = $row['c3_datetime'];
if ($value1 !== $value2) {
2017-03-08 23:17:21 +01:00
echo "Data corrupted: $value1 !== $value2\n";
}
2017-03-09 00:53:59 +01:00
$value1 = $obj->c4_smalldatetime;
$value2 = $row['c4_smalldatetime'];
if ($value1 !== $value2) {
2017-03-09 00:53:59 +01:00
echo "Data corrupted: $value1 !== $value2\n";
}
} while (++$rowFetched < $numRows);
2017-03-08 23:17:21 +01:00
}
function GetQuery($tableName, $index)
{
$query = "";
switch ($index) {
2017-03-08 23:17:21 +01:00
case 1:
$query = "INSERT INTO $tableName ([c1_int], [c3_datetime], [c4_smalldatetime]) VALUES ((2073189157), ('1753-01-01 00:00:00.000'), (null))";
break;
case 2:
$query = "INSERT INTO $tableName ([c1_int], [c3_datetime], [c4_smalldatetime]) VALUES ((-920147222), ('3895-08-29 00:41:03.351'), ('1936-01-05 21:34:00'))";
break;
case 3:
$query = "INSERT INTO $tableName ([c1_int], [c3_datetime], [c4_smalldatetime]) VALUES ((-2147483648), ('1753-01-01 00:00:00.000'), ('1915-11-08 19:46:00'))";
break;
case 4:
$query = "INSERT INTO $tableName ([c1_int], [c3_datetime], [c4_smalldatetime]) VALUES ((1269199053), (null), ('2075-04-27 22:16:00'))";
break;
2017-03-08 23:17:21 +01:00
default:
break;
}
return $query;
}
function Repro()
{
startTest("sqlsrv_fetch_datetime_as_strings");
try {
set_time_limit(0);
sqlsrv_configure('WarningsReturnAsErrors', 1);
echo "\nTest begins...\n";
2017-03-08 23:17:21 +01:00
// Connect
$conn = connect(array('ReturnDatesAsStrings'=>true));
if (!$conn) {
fatalError("Could not connect.\n");
}
2017-03-08 23:17:21 +01:00
FetchDateTime_AsString($conn);
sqlsrv_close($conn);
} catch (Exception $e) {
2017-03-08 23:17:21 +01:00
echo $e->getMessage();
}
echo "\nDone\n";
endTest("sqlsrv_fetch_datetime_as_strings");
2017-03-08 23:17:21 +01:00
}
Repro();
?>
--EXPECT--

Test begins...
2017-03-08 23:17:21 +01:00
Done
Test "sqlsrv_fetch_datetime_as_strings" completed successfully.