From: fandrieu Date: Fri, 10 Nov 2017 22:18:59 +0000 (-0500) Subject: Treat DATETIME2 columns like DATETIME X-Git-Tag: php-7.3.0alpha1~1057 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a0ed09f92b66a86de4cbc2bd17e245f007626133;p=php Treat DATETIME2 columns like DATETIME --- diff --git a/NEWS b/NEWS index 9567993c76..40234dc2b7 100644 --- a/NEWS +++ b/NEWS @@ -84,6 +84,7 @@ PHP NEWS . Fixed bug #74243 (allow locales.conf to drive datetime format). (fandrieu) . Expose TDS version as \PDO::DBLIB_ATTR_TDS_VERSION attribute on \PDO instance. (fandrieu) + . Treat DATETIME2 columns like DATETIME. (fandrieu) - PDO_OCI: . Fixed bug #74631 (PDO_PCO with PHP-FPM: OCI environment initialized diff --git a/ext/pdo_dblib/dblib_stmt.c b/ext/pdo_dblib/dblib_stmt.c index 3e4625ee67..b4e4372821 100644 --- a/ext/pdo_dblib/dblib_stmt.c +++ b/ext/pdo_dblib/dblib_stmt.c @@ -294,6 +294,9 @@ static int pdo_dblib_stmt_should_stringify_col(pdo_stmt_t *stmt, int coltype) } break; +#ifdef SQLMSDATETIME2 + case SQLMSDATETIME2: +#endif case SQLDATETIME: case SQLDATETIM4: if (H->datetime_convert) { @@ -388,6 +391,9 @@ static int pdo_dblib_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, break; } +#ifdef SQLMSDATETIME2 + case SQLMSDATETIME2: +#endif case SQLDATETIME: case SQLDATETIM4: { size_t dl; diff --git a/ext/pdo_dblib/php_pdo_dblib_int.h b/ext/pdo_dblib/php_pdo_dblib_int.h index d1be37ee79..cae7b77394 100644 --- a/ext/pdo_dblib/php_pdo_dblib_int.h +++ b/ext/pdo_dblib/php_pdo_dblib_int.h @@ -64,6 +64,9 @@ # define SQLDATETIME SYBDATETIME # define SQLDATETIM4 SYBDATETIME4 # define SQLDATETIMN SYBDATETIMN +# ifdef SYBMSDATETIME2 +# define SQLMSDATETIME2 SYBMSDATETIME2 +# endif # define SQLMONEY SYBMONEY # define SQLMONEY4 SYBMONEY4 # define SQLMONEYN SYBMONEYN diff --git a/ext/pdo_dblib/tests/datetime2.phpt b/ext/pdo_dblib/tests/datetime2.phpt new file mode 100644 index 0000000000..becf1b0a8f --- /dev/null +++ b/ext/pdo_dblib/tests/datetime2.phpt @@ -0,0 +1,36 @@ +--TEST-- +PDO_DBLIB: DATETIME2 column data +--SKIPIF-- +getAttribute(PDO::DBLIB_ATTR_TDS_VERSION), ['4.2', '4.6', '5.0', '6.0', '7.0', '7.1', '7.2'])) die('skip feature unsupported by this TDS version'); +?> +--FILE-- +getAttribute(PDO::DBLIB_ATTR_DATETIME_CONVERT)); + +$stmt = $db->query($sql); +var_dump($stmt->fetch(PDO::FETCH_ASSOC)); + +$db->setAttribute(PDO::DBLIB_ATTR_DATETIME_CONVERT, 1); +var_dump($db->getAttribute(PDO::DBLIB_ATTR_DATETIME_CONVERT)); +$stmt = $db->query($sql); +var_dump($stmt->fetch(PDO::FETCH_ASSOC)); + +?> +--EXPECT-- +bool(false) +array(1) { + ["d"]=> + string(19) "1023-10-17 10:22:44" +} +bool(true) +array(1) { + ["d"]=> + string(30) "Oct 17 1023 10:22:44:1355318AM" +}