Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
b4d80abd
Commit
b4d80abd
authored
Aug 06, 2013
by
Guilherme Blanco
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #354 from makhov/master
Add hour to DATE_ADD and DATE_SUB
parents
92b61c75
7dcb6f93
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
130 additions
and
0 deletions
+130
-0
AbstractPlatform.php
lib/Doctrine/DBAL/Platforms/AbstractPlatform.php
+30
-0
DrizzlePlatform.php
lib/Doctrine/DBAL/Platforms/DrizzlePlatform.php
+16
-0
MySqlPlatform.php
lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
+16
-0
OraclePlatform.php
lib/Doctrine/DBAL/Platforms/OraclePlatform.php
+16
-0
PostgreSqlPlatform.php
lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php
+16
-0
SQLServerPlatform.php
lib/Doctrine/DBAL/Platforms/SQLServerPlatform.php
+16
-0
SqlitePlatform.php
lib/Doctrine/DBAL/Platforms/SqlitePlatform.php
+16
-0
DataAccessTest.php
tests/Doctrine/Tests/DBAL/Functional/DataAccessTest.php
+4
-0
No files found.
lib/Doctrine/DBAL/Platforms/AbstractPlatform.php
View file @
b4d80abd
...
...
@@ -939,6 +939,36 @@ abstract class AbstractPlatform
throw
DBALException
::
notSupported
(
__METHOD__
);
}
/**
* Returns the SQL to add the number of given hours to a date.
*
* @param string $date
* @param integer $hours
*
* @return string
*
* @throws \Doctrine\DBAL\DBALException If not supported on this platform.
*/
public
function
getDateAddHourExpression
(
$date
,
$hours
)
{
throw
DBALException
::
notSupported
(
__METHOD__
);
}
/**
* Returns the SQL to subtract the number of given hours to a date.
*
* @param string $date
* @param integer $hours
*
* @return string
*
* @throws \Doctrine\DBAL\DBALException If not supported on this platform.
*/
public
function
getDateSubHourExpression
(
$date
,
$hours
)
{
throw
DBALException
::
notSupported
(
__METHOD__
);
}
/**
* Returns the SQL to add the number of given days to a date.
*
...
...
lib/Doctrine/DBAL/Platforms/DrizzlePlatform.php
View file @
b4d80abd
...
...
@@ -65,6 +65,22 @@ class DrizzlePlatform extends AbstractPlatform
return
'DATEDIFF('
.
$date1
.
', '
.
$date2
.
')'
;
}
/**
* {@inheritDoc}
*/
public
function
getDateAddHourExpression
(
$date
,
$hours
)
{
return
'DATE_ADD('
.
$date
.
', INTERVAL '
.
$hours
.
' HOUR)'
;
}
/**
* {@inheritDoc}
*/
public
function
getDateSubHourExpression
(
$date
,
$hours
)
{
return
'DATE_SUB('
.
$date
.
', INTERVAL '
.
$hours
.
' HOUR)'
;
}
/**
* {@inheritDoc}
*/
...
...
lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
View file @
b4d80abd
...
...
@@ -115,6 +115,22 @@ class MySqlPlatform extends AbstractPlatform
return
'DATEDIFF('
.
$date1
.
', '
.
$date2
.
')'
;
}
/**
* {@inheritDoc}
*/
public
function
getDateAddHourExpression
(
$date
,
$hours
)
{
return
'DATE_ADD('
.
$date
.
', INTERVAL '
.
$hours
.
' HOUR)'
;
}
/**
* {@inheritDoc}
*/
public
function
getDateSubHourExpression
(
$date
,
$hours
)
{
return
'DATE_SUB('
.
$date
.
', INTERVAL '
.
$hours
.
' HOUR)'
;
}
/**
* {@inheritDoc}
*/
...
...
lib/Doctrine/DBAL/Platforms/OraclePlatform.php
View file @
b4d80abd
...
...
@@ -110,6 +110,22 @@ class OraclePlatform extends AbstractPlatform
return
"TRUNC(TO_NUMBER(SUBSTR(("
.
$date1
.
"-"
.
$date2
.
"), 1, INSTR("
.
$date1
.
"-"
.
$date2
.
", ' '))))"
;
}
/**
* {@inheritDoc}
*/
public
function
getDateAddHourExpression
(
$date
,
$hours
)
{
return
'('
.
$date
.
'+'
.
$hours
.
'/24)'
;
}
/**
* {@inheritDoc}
*/
public
function
getDateSubHourExpression
(
$date
,
$hours
)
{
return
'('
.
$date
.
'-'
.
$hours
.
'/24)'
;
}
/**
* {@inheritDoc}
*/
...
...
lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php
View file @
b4d80abd
...
...
@@ -100,6 +100,22 @@ class PostgreSqlPlatform extends AbstractPlatform
return
'(DATE('
.
$date1
.
')-DATE('
.
$date2
.
'))'
;
}
/**
* {@inheritDoc}
*/
public
function
getDateAddHourExpression
(
$date
,
$hours
)
{
return
"("
.
$date
.
" + ("
.
$hours
.
" || ' hour')::interval)"
;
}
/**
* {@inheritDoc}
*/
public
function
getDateSubHourExpression
(
$date
,
$hours
)
{
return
"("
.
$date
.
" - ("
.
$hours
.
" || ' hour')::interval)"
;
}
/**
* {@inheritDoc}
*/
...
...
lib/Doctrine/DBAL/Platforms/SQLServerPlatform.php
View file @
b4d80abd
...
...
@@ -46,6 +46,22 @@ class SQLServerPlatform extends AbstractPlatform
return
'DATEDIFF(day, '
.
$date2
.
','
.
$date1
.
')'
;
}
/**
* {@inheritDoc}
*/
public
function
getDateAddHourExpression
(
$date
,
$hours
)
{
return
'DATEADD(hour, '
.
$hours
.
', '
.
$date
.
')'
;
}
/**
* {@inheritDoc}
*/
public
function
getDateSubHourExpression
(
$date
,
$hours
)
{
return
'DATEADD(hour, -1 * '
.
$hours
.
', '
.
$date
.
')'
;
}
/**
* {@inheritDoc}
*/
...
...
lib/Doctrine/DBAL/Platforms/SqlitePlatform.php
View file @
b4d80abd
...
...
@@ -130,6 +130,22 @@ class SqlitePlatform extends AbstractPlatform
return
'ROUND(JULIANDAY('
.
$date1
.
')-JULIANDAY('
.
$date2
.
'))'
;
}
/**
* {@inheritDoc}
*/
public
function
getDateAddHourExpression
(
$date
,
$hours
)
{
return
"DATETIME("
.
$date
.
",'+"
.
$hours
.
" hour')"
;
}
/**
* {@inheritDoc}
*/
public
function
getDateSubHourExpression
(
$date
,
$hours
)
{
return
"DATETIME("
.
$date
.
",'-"
.
$hours
.
" hour')"
;
}
/**
* {@inheritDoc}
*/
...
...
tests/Doctrine/Tests/DBAL/Functional/DataAccessTest.php
View file @
b4d80abd
...
...
@@ -348,6 +348,8 @@ class DataAccessTest extends \Doctrine\Tests\DbalFunctionalTestCase
$p
=
$this
->
_conn
->
getDatabasePlatform
();
$sql
=
'SELECT '
;
$sql
.=
$p
->
getDateDiffExpression
(
'test_datetime'
,
$p
->
getCurrentTimestampSQL
())
.
' AS diff, '
;
$sql
.=
$p
->
getDateAddHourExpression
(
'test_datetime'
,
3
)
.
' AS add_hour, '
;
$sql
.=
$p
->
getDateSubHourExpression
(
'test_datetime'
,
3
)
.
' AS sub_hour, '
;
$sql
.=
$p
->
getDateAddDaysExpression
(
'test_datetime'
,
10
)
.
' AS add_days, '
;
$sql
.=
$p
->
getDateSubDaysExpression
(
'test_datetime'
,
10
)
.
' AS sub_days, '
;
$sql
.=
$p
->
getDateAddMonthExpression
(
'test_datetime'
,
2
)
.
' AS add_month, '
;
...
...
@@ -359,6 +361,8 @@ class DataAccessTest extends \Doctrine\Tests\DbalFunctionalTestCase
$diff
=
floor
(
(
strtotime
(
'2010-01-01'
)
-
time
())
/
3600
/
24
);
$this
->
assertEquals
(
$diff
,
(
int
)
$row
[
'diff'
],
"Date difference should be approx. "
.
$diff
.
" days."
,
1
);
$this
->
assertEquals
(
'2010-01-01 13:10'
,
date
(
'Y-m-d H:i'
,
strtotime
(
$row
[
'add_hour'
])),
"Adding date should end up on 2010-01-01 13:10"
);
$this
->
assertEquals
(
'2010-01-01 07:10'
,
date
(
'Y-m-d H:i'
,
strtotime
(
$row
[
'sub_hour'
])),
"Subtracting date should end up on 2010-01-01 07:10"
);
$this
->
assertEquals
(
'2010-01-11'
,
date
(
'Y-m-d'
,
strtotime
(
$row
[
'add_days'
])),
"Adding date should end up on 2010-01-11"
);
$this
->
assertEquals
(
'2009-12-22'
,
date
(
'Y-m-d'
,
strtotime
(
$row
[
'sub_days'
])),
"Subtracting date should end up on 2009-12-22"
);
$this
->
assertEquals
(
'2010-03-01'
,
date
(
'Y-m-d'
,
strtotime
(
$row
[
'add_month'
])),
"Adding month should end up on 2010-03-01"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment