From ed0cb63df0328c3cdd590226b616ca84a62390e6 Mon Sep 17 00:00:00 2001 From: hubipe Date: Mon, 6 Feb 2017 10:39:34 +0100 Subject: [PATCH] Support for microseconds (#246) --- src/Dibi/DateTime.php | 2 +- src/Dibi/Drivers/FirebirdDriver.php | 2 +- src/Dibi/Drivers/MsSqlDriver.php | 2 +- src/Dibi/Drivers/MySqlDriver.php | 2 +- src/Dibi/Drivers/MySqliDriver.php | 2 +- src/Dibi/Drivers/OdbcDriver.php | 2 +- src/Dibi/Drivers/PdoDriver.php | 2 +- src/Dibi/Drivers/PostgreDriver.php | 2 +- src/Dibi/Drivers/SqlsrvDriver.php | 2 +- tests/dibi/Translator.phpt | 7 ++++--- 10 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Dibi/DateTime.php b/src/Dibi/DateTime.php index 036420f0..fbc1d08c 100644 --- a/src/Dibi/DateTime.php +++ b/src/Dibi/DateTime.php @@ -55,7 +55,7 @@ class DateTime extends \DateTime public function __toString() { - return $this->format('Y-m-d H:i:s'); + return $this->format('Y-m-d H:i:s.u'); } diff --git a/src/Dibi/Drivers/FirebirdDriver.php b/src/Dibi/Drivers/FirebirdDriver.php index 34f06081..58e1afea 100644 --- a/src/Dibi/Drivers/FirebirdDriver.php +++ b/src/Dibi/Drivers/FirebirdDriver.php @@ -313,7 +313,7 @@ class FirebirdDriver implements Dibi\Driver, Dibi\ResultDriver, Dibi\Reflector if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) { $value = new Dibi\DateTime($value); } - return $value->format("'Y-m-d H:i:s'"); + return $value->format("'Y-m-d H:i:s.u'"); } diff --git a/src/Dibi/Drivers/MsSqlDriver.php b/src/Dibi/Drivers/MsSqlDriver.php index c6b81c22..62545bc8 100644 --- a/src/Dibi/Drivers/MsSqlDriver.php +++ b/src/Dibi/Drivers/MsSqlDriver.php @@ -263,7 +263,7 @@ class MsSqlDriver implements Dibi\Driver, Dibi\ResultDriver if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) { $value = new Dibi\DateTime($value); } - return $value->format("'Y-m-d H:i:s'"); + return $value->format("'Y-m-d H:i:s.u'"); } diff --git a/src/Dibi/Drivers/MySqlDriver.php b/src/Dibi/Drivers/MySqlDriver.php index d816e5d5..93ab512f 100644 --- a/src/Dibi/Drivers/MySqlDriver.php +++ b/src/Dibi/Drivers/MySqlDriver.php @@ -347,7 +347,7 @@ class MySqlDriver implements Dibi\Driver, Dibi\ResultDriver if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) { $value = new Dibi\DateTime($value); } - return $value->format("'Y-m-d H:i:s'"); + return $value->format("'Y-m-d H:i:s.u'"); } diff --git a/src/Dibi/Drivers/MySqliDriver.php b/src/Dibi/Drivers/MySqliDriver.php index 2b50619b..5b19e4bf 100644 --- a/src/Dibi/Drivers/MySqliDriver.php +++ b/src/Dibi/Drivers/MySqliDriver.php @@ -355,7 +355,7 @@ class MySqliDriver implements Dibi\Driver, Dibi\ResultDriver if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) { $value = new Dibi\DateTime($value); } - return $value->format("'Y-m-d H:i:s'"); + return $value->format("'Y-m-d H:i:s.u'"); } diff --git a/src/Dibi/Drivers/OdbcDriver.php b/src/Dibi/Drivers/OdbcDriver.php index ff07034d..bc5d5f37 100644 --- a/src/Dibi/Drivers/OdbcDriver.php +++ b/src/Dibi/Drivers/OdbcDriver.php @@ -287,7 +287,7 @@ class OdbcDriver implements Dibi\Driver, Dibi\ResultDriver, Dibi\Reflector if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) { $value = new Dibi\DateTime($value); } - return $value->format("#m/d/Y H:i:s#"); + return $value->format("#m/d/Y H:i:s.u#"); } diff --git a/src/Dibi/Drivers/PdoDriver.php b/src/Dibi/Drivers/PdoDriver.php index 483d860b..1f7b0a26 100644 --- a/src/Dibi/Drivers/PdoDriver.php +++ b/src/Dibi/Drivers/PdoDriver.php @@ -348,7 +348,7 @@ class PdoDriver implements Dibi\Driver, Dibi\ResultDriver if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) { $value = new Dibi\DateTime($value); } - return $value->format($this->driverName === 'odbc' ? "#m/d/Y H:i:s#" : "'Y-m-d H:i:s'"); + return $value->format($this->driverName === 'odbc' ? "#m/d/Y H:i:s.u#" : "'Y-m-d H:i:s.u'"); } diff --git a/src/Dibi/Drivers/PostgreDriver.php b/src/Dibi/Drivers/PostgreDriver.php index 2259185c..4ad48caa 100644 --- a/src/Dibi/Drivers/PostgreDriver.php +++ b/src/Dibi/Drivers/PostgreDriver.php @@ -361,7 +361,7 @@ class PostgreDriver implements Dibi\Driver, Dibi\ResultDriver, Dibi\Reflector if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) { $value = new Dibi\DateTime($value); } - return $value->format("'Y-m-d H:i:s'"); + return $value->format("'Y-m-d H:i:s.u'"); } diff --git a/src/Dibi/Drivers/SqlsrvDriver.php b/src/Dibi/Drivers/SqlsrvDriver.php index 4c20222e..ef154ba7 100644 --- a/src/Dibi/Drivers/SqlsrvDriver.php +++ b/src/Dibi/Drivers/SqlsrvDriver.php @@ -287,7 +287,7 @@ class SqlsrvDriver implements Dibi\Driver, Dibi\ResultDriver if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) { $value = new Dibi\DateTime($value); } - return $value->format("'Y-m-d H:i:s'"); + return $value->format("'Y-m-d H:i:s.u'"); } diff --git a/tests/dibi/Translator.phpt b/tests/dibi/Translator.phpt index 746c8895..9c970cb9 100644 --- a/tests/dibi/Translator.phpt +++ b/tests/dibi/Translator.phpt @@ -9,7 +9,7 @@ use Dibi\DateTime; require __DIR__ . '/bootstrap.php'; -$conn = new Dibi\Connection($config + ['formatDateTime' => "'Y-m-d H:i:s'", 'formatDate' => "'Y-m-d'"]); +$conn = new Dibi\Connection($config + ['formatDateTime' => "'Y-m-d H:i:s.u'", 'formatDate' => "'Y-m-d'"]); // dibi detects INSERT or REPLACE command & booleans @@ -178,8 +178,8 @@ if ($config['system'] === 'odbc') { Assert::same( reformat([ - 'odbc' => 'INSERT INTO test ([a2], [a4], [b1], [b2], [b3], [b4], [b5], [b6], [b7], [b8], [b9]) VALUES (#09/26/1212 00:00:00#, #12/31/1969 22:13:20#, #09/26/1212#, #09/26/1212 00:00:00#, #12/31/1969#, #12/31/1969 22:13:20#, #09/26/1212 00:00:00#, #09/26/1212#, #09/26/1212 00:00:00#, NULL, NULL)', - "INSERT INTO test ([a2], [a4], [b1], [b2], [b3], [b4], [b5], [b6], [b7], [b8], [b9]) VALUES ('1212-09-26 00:00:00', '1969-12-31 22:13:20', '1212-09-26', '1212-09-26 00:00:00', '1969-12-31', '1969-12-31 22:13:20', '1212-09-26 00:00:00', '1212-09-26', '1212-09-26 00:00:00', NULL, NULL)", + 'odbc' => 'INSERT INTO test ([a2], [a4], [b1], [b2], [b3], [b4], [b5], [b6], [b7], [b8], [b9], [c1]) VALUES (#09/26/1212 00:00:00.000000#, #12/31/1969 22:13:20.000000#, #09/26/1212#, #09/26/1212 00:00:00.000000#, #12/31/1969#, #12/31/1969 22:13:20.000000#, #09/26/1212 00:00:00.000000#, #09/26/1212#, #09/26/1212 00:00:00.000000#, NULL, NULL, #09/26/1212 16:51:34.012400#)', + "INSERT INTO test ([a2], [a4], [b1], [b2], [b3], [b4], [b5], [b6], [b7], [b8], [b9], [c1]) VALUES ('1212-09-26 00:00:00.000000', '1969-12-31 22:13:20.000000', '1212-09-26', '1212-09-26 00:00:00.000000', '1969-12-31', '1969-12-31 22:13:20.000000', '1212-09-26 00:00:00.000000', '1212-09-26', '1212-09-26 00:00:00.000000', NULL, NULL, '1212-09-26 16:51:34.012400')", ]), $conn->translate('INSERT INTO test', [ 'a2' => new DateTime('1212-09-26'), @@ -193,6 +193,7 @@ Assert::same( 'b7%t' => new DateTime('1212-09-26'), 'b8%d' => NULL, 'b9%t' => NULL, + 'c1%t' => new DateTime('1212-09-26 16:51:34.0124'), ])); Assert::exception(function () use ($conn) {