diff options
author | Jon Dufresne <jon.dufresne@gmail.com> | 2015-03-07 13:20:29 -0800 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-06-02 08:49:10 -0400 |
commit | 44f3ee77166bd5c0e8a4604f2d96015268dce100 (patch) | |
tree | 733d47ee8d00d3934ae86d8b26275ad4fde4d371 /django/db/backends/mysql/operations.py | |
parent | 076a63e672370ff1735e7942cd1ae0990bcbd263 (diff) | |
download | django-44f3ee77166bd5c0e8a4604f2d96015268dce100.tar.gz |
Fixed #9596 -- Added date transform for DateTimeField.
Diffstat (limited to 'django/db/backends/mysql/operations.py')
-rw-r--r-- | django/db/backends/mysql/operations.py | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/django/db/backends/mysql/operations.py b/django/db/backends/mysql/operations.py index fa0e1edcab..a496079932 100644 --- a/django/db/backends/mysql/operations.py +++ b/django/db/backends/mysql/operations.py @@ -39,27 +39,26 @@ class DatabaseOperations(BaseDatabaseOperations): sql = "CAST(DATE_FORMAT(%s, '%s') AS DATETIME)" % (field_name, format_str) return sql - def datetime_extract_sql(self, lookup_type, field_name, tzname): + def _convert_field_to_tz(self, field_name, tzname): if settings.USE_TZ: field_name = "CONVERT_TZ(%s, 'UTC', %%s)" % field_name params = [tzname] else: params = [] - # http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html - if lookup_type == 'week_day': - # DAYOFWEEK() returns an integer, 1-7, Sunday=1. - # Note: WEEKDAY() returns 0-6, Monday=0. - sql = "DAYOFWEEK(%s)" % field_name - else: - sql = "EXTRACT(%s FROM %s)" % (lookup_type.upper(), field_name) + return field_name, params + + def datetime_cast_date_sql(self, field_name, tzname): + field_name, params = self._convert_field_to_tz(field_name, tzname) + sql = "DATE(%s)" % field_name + return sql, params + + def datetime_extract_sql(self, lookup_type, field_name, tzname): + field_name, params = self._convert_field_to_tz(field_name, tzname) + sql = self.date_extract_sql(lookup_type, field_name) return sql, params def datetime_trunc_sql(self, lookup_type, field_name, tzname): - if settings.USE_TZ: - field_name = "CONVERT_TZ(%s, 'UTC', %%s)" % field_name - params = [tzname] - else: - params = [] + field_name, params = self._convert_field_to_tz(field_name, tzname) fields = ['year', 'month', 'day', 'hour', 'minute', 'second'] format = ('%%Y-', '%%m', '-%%d', ' %%H:', '%%i', ':%%s') # Use double percents to escape. format_def = ('0000-', '01', '-01', ' 00:', '00', ':00') |