From 5e05ec3ea60a367f97ebf1321f79bf929446f07d Mon Sep 17 00:00:00 2001
From: Shai Berger <shai@platonix.com>
Date: Mon, 27 May 2013 16:48:28 +0300
Subject: [PATCH] Fixed #20501 -- failure of datetime queries with timezones
 under Oracle

---
 django/db/backends/oracle/base.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py
index dd89ae0ba8..0afc5f23e8 100644
--- a/django/db/backends/oracle/base.py
+++ b/django/db/backends/oracle/base.py
@@ -442,9 +442,10 @@ WHEN (new.%(col_name)s IS NULL)
         # 'second' instead -- cx_Oracle chops the fraction-of-second part
         # off of datetime objects, leaving almost an entire second out of
         # the year under the default implementation.
-        first = '%s-01-01'
-        second = '%s-12-31 23:59:59.999999'
-        return [first % value, second % value]
+        bounds = super(DatabaseOperations, self).year_lookup_bounds_for_datetime_field(value)
+        if settings.USE_TZ:
+            bounds = [b.astimezone(timezone.utc).replace(tzinfo=None) for b in bounds]
+        return [b.isoformat(b' ') for b in bounds]
 
     def combine_expression(self, connector, sub_expressions):
         "Oracle requires special cases for %% and & operators in query expressions"