Author: dr Date: Mon Dec 3 13:43:47 2007 New Revision: 6902 Log: - Fixed bug #12152: The SQLite's unixTimestamp() expression function implementation uses the current UTC offset, instead of the UTC offset that belongs to the date for which a Unix timestamp should be generated.
Modified: trunk/Database/ChangeLog trunk/Database/src/handlers/sqlite.php trunk/Database/src/sqlabstraction/implementations/expression_sqlite.php trunk/Database/src/sqlabstraction/implementations/query_sqlite_function_implementations.php trunk/Database/tests/sqlabstraction/expression_test.php Modified: trunk/Database/ChangeLog ============================================================================== --- trunk/Database/ChangeLog [iso-8859-1] (original) +++ trunk/Database/ChangeLog [iso-8859-1] Mon Dec 3 13:43:47 2007 @@ -1,3 +1,11 @@ +1.3.3 - [RELEASEDATE] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed bug #12152: The SQLite's unixTimestamp() expression function + implementation uses the current UTC offset, instead of the UTC offset that + belongs to the date for which a Unix timestamp should be generated. + + 1.3.2 - Wednesday 28 November 2007 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Modified: trunk/Database/src/handlers/sqlite.php ============================================================================== --- trunk/Database/src/handlers/sqlite.php [iso-8859-1] (original) +++ trunk/Database/src/handlers/sqlite.php [iso-8859-1] Mon Dec 3 13:43:47 2007 @@ -72,6 +72,7 @@ $this->sqliteCreateFunction( 'floor', array( 'ezcQuerySqliteFunctions', 'floorImpl'), 1 ); $this->sqliteCreateFunction( 'ceil', array( 'ezcQuerySqliteFunctions', 'ceilImpl'), 1 ); $this->sqliteCreateFunction( 'concat', array( 'ezcQuerySqliteFunctions', 'concatImpl') ); + $this->sqliteCreateFunction( 'toUnixTimestamp', array( 'ezcQuerySqliteFunctions', 'toUnixTimestampImpl' ), 1 ); $this->sqliteCreateFunction( 'now', 'time', 0 ); } Modified: trunk/Database/src/sqlabstraction/implementations/expression_sqlite.php ============================================================================== --- trunk/Database/src/sqlabstraction/implementations/expression_sqlite.php [iso-8859-1] (original) +++ trunk/Database/src/sqlabstraction/implementations/expression_sqlite.php [iso-8859-1] Mon Dec 3 13:43:47 2007 @@ -99,7 +99,7 @@ else { $column = $this->getIdentifier( $column ); - return " strftime( '%s', {$column} ) - ".date('Z')." "; + return " toUnixTimestamp( {$column} ) "; } } Modified: trunk/Database/src/sqlabstraction/implementations/query_sqlite_function_implementations.php ============================================================================== --- trunk/Database/src/sqlabstraction/implementations/query_sqlite_function_implementations.php [iso-8859-1] (original) +++ trunk/Database/src/sqlabstraction/implementations/query_sqlite_function_implementations.php [iso-8859-1] Mon Dec 3 13:43:47 2007 @@ -87,5 +87,16 @@ { return (int) ceil( $number ); } + + /** + * Returns the unix timestamp belonging to a date/time spec + * + * @param string $spec + * @return integer + */ + static public function toUnixTimestampImpl( $spec ) + { + return strtotime( $spec ); + } } ?> Modified: trunk/Database/tests/sqlabstraction/expression_test.php ============================================================================== --- trunk/Database/tests/sqlabstraction/expression_test.php [iso-8859-1] (original) +++ trunk/Database/tests/sqlabstraction/expression_test.php [iso-8859-1] Mon Dec 3 13:43:47 2007 @@ -976,12 +976,20 @@ $this->assertSame( 4, (int)$stmt->fetchColumn( 0 ) ); } - public function testUnixTimestampImpl() + public function testUnixTimestampImpl1() { $this->q->select( $this->e->unixTimestamp( "'2007-05-03 11:54:17'" ) ); $stmt = $this->q->prepare(); $stmt->execute(); $this->assertSame( strtotime( '2007-05-03 11:54:17' ), (int)$stmt->fetchColumn( 0 ) ); + } + + public function testUnixTimestampImpl2() + { + $this->q->select( $this->e->unixTimestamp( "'2007-12-03 11:54:17'" ) ); + $stmt = $this->q->prepare(); + $stmt->execute(); + $this->assertSame( strtotime( '2007-12-03 11:54:17' ), (int)$stmt->fetchColumn( 0 ) ); } public function testDateSubSecondImpl() -- svn-components mailing list svn-components@lists.ez.no http://lists.ez.no/mailman/listinfo/svn-components