Fixed #14453 -- Changed handling of microseconds part in typecast_timestamp() DB backend helper function to be more correct. Thanks philipn for the report and fix.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14664 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
f27e6f0dd1
commit
6774207394
|
@ -92,7 +92,7 @@ def typecast_timestamp(s): # does NOT store time zone information
|
||||||
else:
|
else:
|
||||||
microseconds = '0'
|
microseconds = '0'
|
||||||
return datetime.datetime(int(dates[0]), int(dates[1]), int(dates[2]),
|
return datetime.datetime(int(dates[0]), int(dates[1]), int(dates[2]),
|
||||||
int(times[0]), int(times[1]), int(seconds), int(float('.'+microseconds) * 1000000))
|
int(times[0]), int(times[1]), int(seconds), int((microseconds + '000000')[:6]))
|
||||||
|
|
||||||
def typecast_boolean(s):
|
def typecast_boolean(s):
|
||||||
if s is None: return None
|
if s is None: return None
|
||||||
|
|
|
@ -35,6 +35,12 @@ TEST_CASES = {
|
||||||
('2005-08-11 8:50:30.9', datetime.datetime(2005, 8, 11, 8, 50, 30, 900000)),
|
('2005-08-11 8:50:30.9', datetime.datetime(2005, 8, 11, 8, 50, 30, 900000)),
|
||||||
('2005-08-11 8:50:30.312-05', datetime.datetime(2005, 8, 11, 8, 50, 30, 312000)),
|
('2005-08-11 8:50:30.312-05', datetime.datetime(2005, 8, 11, 8, 50, 30, 312000)),
|
||||||
('2005-08-11 8:50:30.312+02', datetime.datetime(2005, 8, 11, 8, 50, 30, 312000)),
|
('2005-08-11 8:50:30.312+02', datetime.datetime(2005, 8, 11, 8, 50, 30, 312000)),
|
||||||
|
# ticket 14453
|
||||||
|
('2010-10-12 15:29:22.063202', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),
|
||||||
|
('2010-10-12 15:29:22.063202-03', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),
|
||||||
|
('2010-10-12 15:29:22.063202+04', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),
|
||||||
|
('2010-10-12 15:29:22.0632021', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),
|
||||||
|
('2010-10-12 15:29:22.0632029', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),
|
||||||
),
|
),
|
||||||
'typecast_boolean': (
|
'typecast_boolean': (
|
||||||
(None, None),
|
(None, None),
|
||||||
|
@ -53,4 +59,4 @@ class DBTypeCasts(unittest.TestCase):
|
||||||
assert got == expected, "In %s: %r doesn't match %r. Got %r instead." % (k, inpt, expected, got)
|
assert got == expected, "In %s: %r doesn't match %r. Got %r instead." % (k, inpt, expected, got)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue