From 7f86cf0c7c9a3690e52e79fb081097b177cd7747 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Fri, 30 Aug 2019 18:50:55 +0200 Subject: [PATCH] implemented MySqliDriver::escapeDateInterval() --- src/Dibi/Drivers/MySqliDriver.php | 5 ++++- tests/dibi/Translator.DateInterval.phpt | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Dibi/Drivers/MySqliDriver.php b/src/Dibi/Drivers/MySqliDriver.php index c04e15e49..e8493f2c6 100644 --- a/src/Dibi/Drivers/MySqliDriver.php +++ b/src/Dibi/Drivers/MySqliDriver.php @@ -304,7 +304,10 @@ public function escapeDateTime(\DateTimeInterface $value): string public function escapeDateInterval(\DateInterval $value): string { - throw new Dibi\NotImplementedException; + if ($value->y || $value->m || $value->d) { + throw new Dibi\NotSupportedException('Only time interval is supported.'); + } + return $value->format('%r%H:%I:%S.%f'); } diff --git a/tests/dibi/Translator.DateInterval.phpt b/tests/dibi/Translator.DateInterval.phpt index 982b42a47..0e7d295c6 100644 --- a/tests/dibi/Translator.DateInterval.phpt +++ b/tests/dibi/Translator.DateInterval.phpt @@ -10,6 +10,14 @@ $conn = new Dibi\Connection($config); $translator = new Dibi\Translator($conn); switch ($config['system']) { + case 'mysql': + Assert::equal('10:20:30.0', $translator->formatValue(new DateInterval('PT10H20M30S'), null)); + Assert::equal('-1:00:00.0', $translator->formatValue(DateInterval::createFromDateString('-1 hour'), null)); + Assert::exception(function () use ($translator) { + $translator->formatValue(new DateInterval('P2Y4DT6H8M'), null); + }, Dibi\NotSupportedException::class, 'Only time interval is supported.'); + break; + default: Assert::exception(function () use ($translator) { $translator->formatValue(new DateInterval('PT10H20M30S'), null);