From cab4ebec343a82075a6fb4f8f81f9b284ac1b975 Mon Sep 17 00:00:00 2001 From: Ethan Mosbaugh Date: Tue, 29 Jul 2014 14:05:45 -0700 Subject: [PATCH] Allow for mysql negative values with 0 hour timedelta --- pymysql/converters.py | 6 +++++- pymysql/tests/test_basic.py | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pymysql/converters.py b/pymysql/converters.py index 011554e..4d339d8 100644 --- a/pymysql/converters.py +++ b/pymysql/converters.py @@ -152,12 +152,16 @@ def convert_timedelta(obj): (obj, tail) = obj.split('.') microseconds = float('0.' + tail) * 1e6 hours, minutes, seconds = obj.split(':') + negate = 1 + if hours.startswith("-"): + hours = hours[1:] + negate = -1 tdelta = datetime.timedelta( hours = int(hours), minutes = int(minutes), seconds = int(seconds), microseconds = int(microseconds) - ) + ) * negate return tdelta except ValueError: return None diff --git a/pymysql/tests/test_basic.py b/pymysql/tests/test_basic.py index a513a87..af23690 100644 --- a/pymysql/tests/test_basic.py +++ b/pymysql/tests/test_basic.py @@ -112,10 +112,14 @@ class TestConversion(base.PyMySQLTestCase): """ test timedelta conversion """ conn = self.connections[0] c = conn.cursor() - c.execute("select time('12:30'), time('23:12:59'), time('23:12:59.05100')") + c.execute("select time('12:30'), time('23:12:59'), time('23:12:59.05100'), time('-12:30'), time('-23:12:59'), time('-23:12:59.05100'), time('-00:30')") self.assertEqual((datetime.timedelta(0, 45000), datetime.timedelta(0, 83579), - datetime.timedelta(0, 83579, 51000)), + datetime.timedelta(0, 83579, 51000), + -datetime.timedelta(0, 45000), + -datetime.timedelta(0, 83579), + -datetime.timedelta(0, 83579, 51000), + -datetime.timedelta(0, 1800)), c.fetchone()) def test_datetime(self):