From ec58431b28b4e3daa42689fe5c43d3f57ea0e8c9 Mon Sep 17 00:00:00 2001 From: Ivan Dudarev Date: Wed, 12 Aug 2026 10:08:14 +0200 Subject: [PATCH] add getDateTimeFormat() method to \Cycle\Database\Driver\Driver --- src/Driver/DateTimeFormatInterface.php | 27 +++++++++++++++++++ src/Driver/Driver.php | 14 +++++++--- .../Driver/Common/Driver/DriverTest.php | 18 +++++++++++++ 3 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 src/Driver/DateTimeFormatInterface.php diff --git a/src/Driver/DateTimeFormatInterface.php b/src/Driver/DateTimeFormatInterface.php new file mode 100644 index 00000000..dba6506b --- /dev/null +++ b/src/Driver/DateTimeFormatInterface.php @@ -0,0 +1,27 @@ +getMessage(), (int) $e->getCode(), $e); } - return $datetime->format( - $this->config->options['withDatetimeMicroseconds'] ? self::DATETIME_MICROSECONDS : self::DATETIME, - ); + return $datetime->format($this->getDateTimeFormat()); } /** @@ -706,4 +704,12 @@ protected function defineLoggerContext(float $queryStart, \PDOStatement|PDOState return $context; } + + /** + * Returns DateTime format of the driver. + */ + public function getDateTimeFormat(): string + { + return $this->config->options['withDatetimeMicroseconds'] ? self::DATETIME_MICROSECONDS : self::DATETIME; + } } diff --git a/tests/Database/Functional/Driver/Common/Driver/DriverTest.php b/tests/Database/Functional/Driver/Common/Driver/DriverTest.php index f527f850..7868d525 100644 --- a/tests/Database/Functional/Driver/Common/Driver/DriverTest.php +++ b/tests/Database/Functional/Driver/Common/Driver/DriverTest.php @@ -64,6 +64,24 @@ public function datetimeDataProvider(): \Traversable yield [new class('2000-01-23T01:23:45.678+09:00') extends \DateTime {}]; } + /** + * @dataProvider dateTimeFormatProvider + */ + public function testGetDateTimeFormat(bool $withDatetimeMicroseconds, string $format): void + { + $options = [ + 'withDatetimeMicroseconds' => $withDatetimeMicroseconds, + ]; + $driver = $this->db(driverConfig: ['options' => $options])->getDriver(); + self::assertSame($format, $driver->getDateTimeFormat()); + } + + public function dateTimeFormatProvider(): \Traversable + { + yield [false, 'Y-m-d H:i:s']; + yield [true, 'Y-m-d H:i:s.u']; + } + public function testClearCache(): void { $driver = $this->mockDriver();