1
0
mirror of https://github.com/dg/dibi.git synced 2025-07-31 03:10:14 +02:00

Driver::escapeDate() & escapeDateTime() accepts only DateTimeInterface (BC break)

This commit is contained in:
David Grudl
2019-08-30 18:05:38 +02:00
parent 7f22279333
commit 78d6603bb0
10 changed files with 22 additions and 123 deletions

View File

@@ -247,26 +247,14 @@ class FirebirdDriver implements Dibi\Driver
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDate($value): string
public function escapeDate(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format("'Y-m-d'");
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDateTime($value): string
public function escapeDateTime(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return "'" . substr($value->format('Y-m-d H:i:s.u'), 0, -2) . "'";
}

View File

@@ -290,26 +290,14 @@ class MySqliDriver implements Dibi\Driver
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDate($value): string
public function escapeDate(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format("'Y-m-d'");
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDateTime($value): string
public function escapeDateTime(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format("'Y-m-d H:i:s.u'");
}

View File

@@ -226,26 +226,14 @@ class OdbcDriver implements Dibi\Driver
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDate($value): string
public function escapeDate(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format('#m/d/Y#');
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDateTime($value): string
public function escapeDateTime(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format($this->microseconds ? '#m/d/Y H:i:s.u#' : '#m/d/Y H:i:s#');
}

View File

@@ -241,28 +241,16 @@ class OracleDriver implements Dibi\Driver
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDate($value): string
public function escapeDate(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $this->nativeDate
? "to_date('" . $value->format('Y-m-d') . "', 'YYYY-mm-dd')"
: $value->format('U');
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDateTime($value): string
public function escapeDateTime(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $this->nativeDate
? "to_date('" . $value->format('Y-m-d G:i:s') . "', 'YYYY-mm-dd hh24:mi:ss')"
: $value->format('U');

View File

@@ -289,26 +289,14 @@ class PdoDriver implements Dibi\Driver
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDate($value): string
public function escapeDate(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format($this->driverName === 'odbc' ? '#m/d/Y#' : "'Y-m-d'");
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDateTime($value): string
public function escapeDateTime(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
switch ($this->driverName) {
case 'odbc':
return $value->format('#m/d/Y H:i:s.u#');

View File

@@ -292,26 +292,14 @@ class PostgreDriver implements Dibi\Driver
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDate($value): string
public function escapeDate(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format("'Y-m-d'");
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDateTime($value): string
public function escapeDateTime(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format("'Y-m-d H:i:s.u'");
}

View File

@@ -230,26 +230,14 @@ class SqliteDriver implements Dibi\Driver
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDate($value): string
public function escapeDate(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format($this->fmtDate);
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDateTime($value): string
public function escapeDateTime(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format($this->fmtDateTime);
}

View File

@@ -219,26 +219,14 @@ class SqlsrvDriver implements Dibi\Driver
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDate($value): string
public function escapeDate(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return $value->format("'Y-m-d'");
}
/**
* @param \DateTimeInterface|string|int $value
*/
public function escapeDateTime($value): string
public function escapeDateTime(\DateTimeInterface $value): string
{
if (!$value instanceof \DateTimeInterface) {
$value = new Dibi\DateTime($value);
}
return 'CONVERT(DATETIME2(7), ' . $value->format("'Y-m-d H:i:s.u'") . ')';
}

View File

@@ -381,10 +381,11 @@ final class Translator
case 'dt': // datetime
if ($value === null) {
return 'NULL';
} else {
return $modifier === 'd' ? $this->driver->escapeDate($value) : $this->driver->escapeDateTime($value);
} elseif (!$value instanceof \DateTimeInterface) {
$value = new DateTime($value);
}
// break omitted
return $modifier === 'd' ? $this->driver->escapeDate($value) : $this->driver->escapeDateTime($value);
case 'by':
case 'n': // composed identifier name
return $this->identifiers->$value;

View File

@@ -87,15 +87,9 @@ interface Driver
function escapeBool(bool $value): string;
/**
* @param \DateTimeInterface|string|int $value
*/
function escapeDate($value): string;
function escapeDate(\DateTimeInterface $value): string;
/**
* @param \DateTimeInterface|string|int $value
*/
function escapeDateTime($value): string;
function escapeDateTime(\DateTimeInterface $value): string;
/**
* Encodes string for use in a LIKE statement.