mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #24959 -- Fixed queries using negative timedeltas on MySQL and Oracle.
This commit is contained in:
committed by
Tim Graham
parent
2742901ac2
commit
b63d0c54b0
@@ -1043,6 +1043,26 @@ class FTimeDeltaTests(TestCase):
|
||||
).order_by('name')
|
||||
self.assertQuerysetEqual(over_estimate, ['e3', 'e4'], lambda e: e.name)
|
||||
|
||||
def test_negative_timedelta_update(self):
|
||||
# subtract 30 seconds, 30 minutes, 2 hours and 2 days
|
||||
experiments = Experiment.objects.filter(name='e0').annotate(
|
||||
start_sub_seconds=F('start') + datetime.timedelta(seconds=-30),
|
||||
).annotate(
|
||||
start_sub_minutes=F('start_sub_seconds') + datetime.timedelta(minutes=-30),
|
||||
).annotate(
|
||||
start_sub_hours=F('start_sub_minutes') + datetime.timedelta(hours=-2),
|
||||
).annotate(
|
||||
new_start=F('start_sub_hours') + datetime.timedelta(days=-2),
|
||||
)
|
||||
expected_start = datetime.datetime(2010, 6, 23, 9, 45, 0)
|
||||
if connection.features.supports_microsecond_precision:
|
||||
# subtract 30 microseconds
|
||||
experiments = experiments.annotate(new_start=F('new_start') + datetime.timedelta(microseconds=-30))
|
||||
expected_start += datetime.timedelta(microseconds=+746970)
|
||||
experiments.update(start=F('new_start'))
|
||||
e0 = Experiment.objects.get(name='e0')
|
||||
self.assertEqual(e0.start, expected_start)
|
||||
|
||||
|
||||
class ValueTests(TestCase):
|
||||
def test_update_TimeField_using_Value(self):
|
||||
|
||||
Reference in New Issue
Block a user