Loading django/db/backends/base/operations.py +6 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,12 @@ class BaseDatabaseOperations(object): """ raise NotImplementedError('subclasses of BaseDatabaseOperations may require a datetime_cast_date() method') def datetime_cast_time_sql(self, field_name, tzname): """ Returns the SQL necessary to cast a datetime value to time value. """ raise NotImplementedError('subclasses of BaseDatabaseOperations may require a datetime_cast_time_sql() method') def datetime_extract_sql(self, lookup_type, field_name, tzname): """ Given a lookup_type of 'year', 'month', 'day', 'hour', 'minute' or Loading django/db/backends/mysql/operations.py +5 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,11 @@ class DatabaseOperations(BaseDatabaseOperations): sql = "DATE(%s)" % field_name return sql, params def datetime_cast_time_sql(self, field_name, tzname): field_name, params = self._convert_field_to_tz(field_name, tzname) sql = "TIME(%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) Loading django/db/backends/oracle/operations.py +6 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,12 @@ WHEN (new.%(col_name)s IS NULL) sql = 'TRUNC(%s)' % field_name return sql, [] def datetime_cast_time_sql(self, field_name, tzname): # Since `TimeField` values are stored as TIMESTAMP where only the date # part is ignored, convert the field to the specified timezone. field_name = self._convert_field_to_tz(field_name, tzname) return field_name, [] def datetime_extract_sql(self, lookup_type, field_name, tzname): field_name = self._convert_field_to_tz(field_name, tzname) sql = self.date_extract_sql(lookup_type, field_name) Loading django/db/backends/postgresql/operations.py +5 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,11 @@ class DatabaseOperations(BaseDatabaseOperations): sql = '(%s)::date' % field_name return sql, params def datetime_cast_time_sql(self, field_name, tzname): field_name, params = self._convert_field_to_tz(field_name, tzname) sql = '(%s)::time' % 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) Loading django/db/backends/sqlite3/base.py +8 −0 Original line number Diff line number Diff line Loading @@ -210,6 +210,7 @@ class DatabaseWrapper(BaseDatabaseWrapper): conn.create_function("django_date_extract", 2, _sqlite_date_extract) conn.create_function("django_date_trunc", 2, _sqlite_date_trunc) conn.create_function("django_datetime_cast_date", 2, _sqlite_datetime_cast_date) conn.create_function("django_datetime_cast_time", 2, _sqlite_datetime_cast_time) conn.create_function("django_datetime_extract", 3, _sqlite_datetime_extract) conn.create_function("django_datetime_trunc", 3, _sqlite_datetime_trunc) conn.create_function("django_time_extract", 2, _sqlite_time_extract) Loading Loading @@ -403,6 +404,13 @@ def _sqlite_datetime_cast_date(dt, tzname): return dt.date().isoformat() def _sqlite_datetime_cast_time(dt, tzname): dt = _sqlite_datetime_parse(dt, tzname) if dt is None: return None return dt.time().isoformat() def _sqlite_datetime_extract(lookup_type, dt, tzname): dt = _sqlite_datetime_parse(dt, tzname) if dt is None: Loading Loading
django/db/backends/base/operations.py +6 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,12 @@ class BaseDatabaseOperations(object): """ raise NotImplementedError('subclasses of BaseDatabaseOperations may require a datetime_cast_date() method') def datetime_cast_time_sql(self, field_name, tzname): """ Returns the SQL necessary to cast a datetime value to time value. """ raise NotImplementedError('subclasses of BaseDatabaseOperations may require a datetime_cast_time_sql() method') def datetime_extract_sql(self, lookup_type, field_name, tzname): """ Given a lookup_type of 'year', 'month', 'day', 'hour', 'minute' or Loading
django/db/backends/mysql/operations.py +5 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,11 @@ class DatabaseOperations(BaseDatabaseOperations): sql = "DATE(%s)" % field_name return sql, params def datetime_cast_time_sql(self, field_name, tzname): field_name, params = self._convert_field_to_tz(field_name, tzname) sql = "TIME(%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) Loading
django/db/backends/oracle/operations.py +6 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,12 @@ WHEN (new.%(col_name)s IS NULL) sql = 'TRUNC(%s)' % field_name return sql, [] def datetime_cast_time_sql(self, field_name, tzname): # Since `TimeField` values are stored as TIMESTAMP where only the date # part is ignored, convert the field to the specified timezone. field_name = self._convert_field_to_tz(field_name, tzname) return field_name, [] def datetime_extract_sql(self, lookup_type, field_name, tzname): field_name = self._convert_field_to_tz(field_name, tzname) sql = self.date_extract_sql(lookup_type, field_name) Loading
django/db/backends/postgresql/operations.py +5 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,11 @@ class DatabaseOperations(BaseDatabaseOperations): sql = '(%s)::date' % field_name return sql, params def datetime_cast_time_sql(self, field_name, tzname): field_name, params = self._convert_field_to_tz(field_name, tzname) sql = '(%s)::time' % 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) Loading
django/db/backends/sqlite3/base.py +8 −0 Original line number Diff line number Diff line Loading @@ -210,6 +210,7 @@ class DatabaseWrapper(BaseDatabaseWrapper): conn.create_function("django_date_extract", 2, _sqlite_date_extract) conn.create_function("django_date_trunc", 2, _sqlite_date_trunc) conn.create_function("django_datetime_cast_date", 2, _sqlite_datetime_cast_date) conn.create_function("django_datetime_cast_time", 2, _sqlite_datetime_cast_time) conn.create_function("django_datetime_extract", 3, _sqlite_datetime_extract) conn.create_function("django_datetime_trunc", 3, _sqlite_datetime_trunc) conn.create_function("django_time_extract", 2, _sqlite_time_extract) Loading Loading @@ -403,6 +404,13 @@ def _sqlite_datetime_cast_date(dt, tzname): return dt.date().isoformat() def _sqlite_datetime_cast_time(dt, tzname): dt = _sqlite_datetime_parse(dt, tzname) if dt is None: return None return dt.time().isoformat() def _sqlite_datetime_extract(lookup_type, dt, tzname): dt = _sqlite_datetime_parse(dt, tzname) if dt is None: Loading