Browse Source

Treat DATETIME2 columns like DATETIME

pull/2902/head
fandrieu 9 years ago
committed by Adam Baratz
parent
commit
a0ed09f92b
  1. 1
      NEWS
  2. 6
      ext/pdo_dblib/dblib_stmt.c
  3. 3
      ext/pdo_dblib/php_pdo_dblib_int.h
  4. 36
      ext/pdo_dblib/tests/datetime2.phpt

1
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

6
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;

3
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

36
ext/pdo_dblib/tests/datetime2.phpt

@ -0,0 +1,36 @@
--TEST--
PDO_DBLIB: DATETIME2 column data
--SKIPIF--
<?php
if (!extension_loaded('pdo_dblib')) die('skip not loaded');
require __DIR__ . '/config.inc';
if (in_array($db->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--
<?php
require __DIR__ . '/config.inc';
$sql = "SELECT convert(datetime2, '10231017 10:22:44.1355318') AS [d]";
var_dump($db->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"
}
Loading…
Cancel
Save