Skip to content

Commit 0408bf4

Browse files
committed
Return broken datetime from MySQL as str
MySQL can return invalid date and times. Python's date, time and datetime doesn't accept it. Fixes PyMySQL#520
1 parent 8009ec5 commit 0408bf4

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

pymysql/converters.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def convert_timedelta(obj):
211211

212212
m = TIMEDELTA_RE.match(obj)
213213
if not m:
214-
return None
214+
return obj
215215

216216
try:
217217
groups = list(m.groups())
@@ -227,7 +227,7 @@ def convert_timedelta(obj):
227227
) * negate
228228
return tdelta
229229
except ValueError:
230-
return None
230+
return obj
231231

232232
TIME_RE = re.compile(r"(\d{1,2}):(\d{1,2}):(\d{1,2})(?:.(\d{1,6}))?")
233233

@@ -259,7 +259,7 @@ def convert_time(obj):
259259

260260
m = TIME_RE.match(obj)
261261
if not m:
262-
return None
262+
return obj
263263

264264
try:
265265
groups = list(m.groups())
@@ -268,7 +268,7 @@ def convert_time(obj):
268268
return datetime.time(hour=int(hours), minute=int(minutes),
269269
second=int(seconds), microsecond=int(microseconds))
270270
except ValueError:
271-
return None
271+
return obj
272272

273273

274274
def convert_date(obj):
@@ -290,7 +290,7 @@ def convert_date(obj):
290290
try:
291291
return datetime.date(*[ int(x) for x in obj.split('-', 2) ])
292292
except ValueError:
293-
return None
293+
return obj
294294

295295

296296
def convert_mysql_timestamp(timestamp):
@@ -325,7 +325,7 @@ def convert_mysql_timestamp(timestamp):
325325
try:
326326
return datetime.datetime(year, month, day, hour, minute, second)
327327
except ValueError:
328-
return None
328+
return timestamp
329329

330330
def convert_set(s):
331331
if isinstance(s, (bytes, bytearray)):

0 commit comments

Comments
 (0)