diff options
author | Sigurd Ljødal <sigurd@ljodal.no> | 2017-09-28 22:39:03 +0200 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2018-01-27 09:59:13 -0500 |
commit | a455e732a0011dfbd15eddaa4fe60cb9439326e0 (patch) | |
tree | 1df72fb36c377ae630e1bbc8a588662f8f3cb46f /django/db/backends/mysql/operations.py | |
parent | f229049d6cd186025f4033dc47608b0c9731e882 (diff) | |
download | django-a455e732a0011dfbd15eddaa4fe60cb9439326e0.tar.gz |
Fixed #28650 -- Added TruncWeek database function.
Diffstat (limited to 'django/db/backends/mysql/operations.py')
-rw-r--r-- | django/db/backends/mysql/operations.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/django/db/backends/mysql/operations.py b/django/db/backends/mysql/operations.py index ad4c13652e..2961d6449b 100644 --- a/django/db/backends/mysql/operations.py +++ b/django/db/backends/mysql/operations.py @@ -53,6 +53,10 @@ class DatabaseOperations(BaseDatabaseOperations): return "MAKEDATE(YEAR(%s), 1) + INTERVAL QUARTER(%s) QUARTER - INTERVAL 1 QUARTER" % ( field_name, field_name ) + elif lookup_type == 'week': + return "DATE_SUB(%s, INTERVAL WEEKDAY(%s) DAY)" % ( + field_name, field_name + ) else: return "DATE(%s)" % (field_name) @@ -84,6 +88,12 @@ class DatabaseOperations(BaseDatabaseOperations): "INTERVAL QUARTER({field_name}) QUARTER - " + "INTERVAL 1 QUARTER, '%%Y-%%m-01 00:00:00') AS DATETIME)" ).format(field_name=field_name) + if lookup_type == 'week': + return ( + "CAST(DATE_FORMAT(DATE_SUB({field_name}, " + "INTERVAL WEEKDAY({field_name}) DAY), " + "'%%Y-%%m-%%d 00:00:00') AS DATETIME)" + ).format(field_name=field_name) try: i = fields.index(lookup_type) + 1 except ValueError: |