summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/db/backends/postgresql/operations.py5
-rw-r--r--django/db/backends/sqlite3/base.py4
-rw-r--r--django/db/models/fields/__init__.py6
3 files changed, 7 insertions, 8 deletions
diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py
index 14bd976d8b..35824609b2 100644
--- a/django/db/backends/postgresql/operations.py
+++ b/django/db/backends/postgresql/operations.py
@@ -27,9 +27,8 @@ class DatabaseOperations(BaseDatabaseOperations):
def date_extract_sql(self, lookup_type, field_name):
# http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT
if lookup_type == 'week_day':
- # Using EXTRACT(), PostgreSQL days are indexed as Sunday=0, Saturday=6.
- # If we instead us TO_CHAR, they're indexed with Sunday=1, Saturday=7
- return "TO_CHAR(%s, 'D')" % field_name
+ # For consistency across backends, we return Sunday=1, Saturday=7.
+ return "EXTRACT('dow' FROM %s) + 1" % field_name
else:
return "EXTRACT('%s' FROM %s)" % (lookup_type, field_name)
diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py
index 8a4c072896..f9be87d00a 100644
--- a/django/db/backends/sqlite3/base.py
+++ b/django/db/backends/sqlite3/base.py
@@ -211,9 +211,9 @@ def _sqlite_extract(lookup_type, dt):
except (ValueError, TypeError):
return None
if lookup_type == 'week_day':
- return unicode((dt.isoweekday() % 7) + 1)
+ return (dt.isoweekday() % 7) + 1
else:
- return unicode(getattr(dt, lookup_type))
+ return getattr(dt, lookup_type)
def _sqlite_date_trunc(lookup_type, dt):
try:
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 0c9aa59425..f580384b80 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -500,10 +500,10 @@ class DateField(Field):
curry(cls._get_next_or_previous_by_FIELD, field=self, is_next=False))
def get_db_prep_lookup(self, lookup_type, value):
- # For "__month", "__day", and "__week_day" lookups, convert the value
- # to a string so the database backend always sees a consistent type.
+ # For "__month", "__day", and "__week_day" lookups, convert the value
+ # to an int so the database backend always sees a consistent type.
if lookup_type in ('month', 'day', 'week_day'):
- return [force_unicode(value)]
+ return [int(value)]
return super(DateField, self).get_db_prep_lookup(lookup_type, value)
def get_db_prep_value(self, value):