summaryrefslogtreecommitdiff
path: root/django/db/backends/mysql/operations.py
diff options
context:
space:
mode:
authorSigurd Ljødal <sigurd@ljodal.no>2017-09-28 22:39:03 +0200
committerTim Graham <timograham@gmail.com>2018-01-27 09:59:13 -0500
commita455e732a0011dfbd15eddaa4fe60cb9439326e0 (patch)
tree1df72fb36c377ae630e1bbc8a588662f8f3cb46f /django/db/backends/mysql/operations.py
parentf229049d6cd186025f4033dc47608b0c9731e882 (diff)
downloaddjango-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.py10
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: