2017-03-08 23:17:21 +01:00
|
|
|
|
--TEST--
|
|
|
|
|
Test fetching datatime fields as strings
|
|
|
|
|
--FILE--
|
|
|
|
|
<?php
|
2017-10-04 23:22:56 +02:00
|
|
|
|
require_once('MsCommon.inc');
|
2017-03-08 23:17:21 +01:00
|
|
|
|
|
|
|
|
|
function FetchDateTime_AsString($conn)
|
|
|
|
|
{
|
|
|
|
|
$tableName = GetTempTableName();
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
|
|
|
|
$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-10-04 23:22:56 +02:00
|
|
|
|
|
2017-03-08 23:17:21 +01:00
|
|
|
|
$numRows = 0;
|
|
|
|
|
$query = GetQuery($tableName, ++$numRows);
|
|
|
|
|
$stmt = sqlsrv_query($conn, $query);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
sqlsrv_free_stmt($stmt);
|
|
|
|
|
|
2017-03-08 23:17:21 +01:00
|
|
|
|
$query = GetQuery($tableName, ++$numRows);
|
|
|
|
|
$stmt = sqlsrv_query($conn, $query);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
sqlsrv_free_stmt($stmt);
|
|
|
|
|
|
2017-03-08 23:17:21 +01:00
|
|
|
|
$query = GetQuery($tableName, ++$numRows);
|
|
|
|
|
$stmt = sqlsrv_query($conn, $query);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
sqlsrv_free_stmt($stmt);
|
|
|
|
|
|
2017-03-08 23:17:21 +01:00
|
|
|
|
$query = GetQuery($tableName, ++$numRows);
|
|
|
|
|
$stmt = sqlsrv_query($conn, $query);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
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-10-04 23:22:56 +02:00
|
|
|
|
|
2017-03-08 23:17:21 +01:00
|
|
|
|
FetchData($stmt1, $stmt2, $numRows);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
|
|
|
|
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'];
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
|
|
|
|
if ($value1 !== $value2) {
|
2017-03-08 23:17:21 +01:00
|
|
|
|
echo "Data corrupted: $value1 !== $value2\n";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
}
|
|
|
|
|
|
2017-03-09 00:53:59 +01:00
|
|
|
|
$value1 = $obj->c4_smalldatetime;
|
|
|
|
|
$value2 = $row['c4_smalldatetime'];
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
|
|
|
|
if ($value1 !== $value2) {
|
2017-03-09 00:53:59 +01:00
|
|
|
|
echo "Data corrupted: $value1 !== $value2\n";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
}
|
|
|
|
|
} while (++$rowFetched < $numRows);
|
2017-03-08 23:17:21 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetQuery($tableName, $index)
|
|
|
|
|
{
|
|
|
|
|
$query = "";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
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'))";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
break;
|
2017-03-08 23:17:21 +01:00
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return $query;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Repro()
|
|
|
|
|
{
|
2017-10-04 23:22:56 +02:00
|
|
|
|
startTest("sqlsrv_fetch_datetime_as_strings");
|
|
|
|
|
try {
|
|
|
|
|
set_time_limit(0);
|
|
|
|
|
sqlsrv_configure('WarningsReturnAsErrors', 1);
|
2017-05-02 02:01:30 +02:00
|
|
|
|
echo "\nTest begins...\n";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
2017-03-08 23:17:21 +01:00
|
|
|
|
// Connect
|
2017-10-04 23:22:56 +02:00
|
|
|
|
$conn = connect(array('ReturnDatesAsStrings'=>true));
|
|
|
|
|
if (!$conn) {
|
|
|
|
|
fatalError("Could not connect.\n");
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-08 23:17:21 +01:00
|
|
|
|
FetchDateTime_AsString($conn);
|
2017-10-04 23:22:56 +02:00
|
|
|
|
|
|
|
|
|
sqlsrv_close($conn);
|
|
|
|
|
} catch (Exception $e) {
|
2017-03-08 23:17:21 +01:00
|
|
|
|
echo $e->getMessage();
|
|
|
|
|
}
|
|
|
|
|
echo "\nDone\n";
|
2017-10-04 23:22:56 +02:00
|
|
|
|
endTest("sqlsrv_fetch_datetime_as_strings");
|
2017-03-08 23:17:21 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Repro();
|
|
|
|
|
|
|
|
|
|
?>
|
|
|
|
|
--EXPECT--
|
|
|
|
|
|
2017-05-02 02:01:30 +02:00
|
|
|
|
Test begins...
|
2017-03-08 23:17:21 +01:00
|
|
|
|
|
|
|
|
|
Done
|
2017-05-02 02:01:30 +02:00
|
|
|
|
Test "sqlsrv_fetch_datetime_as_strings" completed successfully.
|