Issue #14720: sqlite3: Convert datetime microseconds correctly

Patch by Lowe Thiderman
This commit is contained in:
Petri Lehtinen 2013-02-23 19:05:09 +01:00
parent ed909bcbdd
commit 8b945148e3
4 changed files with 23 additions and 2 deletions

View file

@ -67,7 +67,7 @@ def register_adapters_and_converters():
timepart_full = timepart.split(b".") timepart_full = timepart.split(b".")
hours, minutes, seconds = map(int, timepart_full[0].split(b":")) hours, minutes, seconds = map(int, timepart_full[0].split(b":"))
if len(timepart_full) == 2: if len(timepart_full) == 2:
microseconds = int(timepart_full[1]) microseconds = int('{:0<6}'.format(timepart_full[1].decode()))
else: else:
microseconds = 0 microseconds = 0

View file

@ -1,4 +1,4 @@
#-*- coding: ISO-8859-1 -*- #-*- coding: iso-8859-1 -*-
# pysqlite2/test/regression.py: pysqlite regression tests # pysqlite2/test/regression.py: pysqlite regression tests
# #
# Copyright (C) 2006-2010 Gerhard Häring <gh@ghaering.de> # Copyright (C) 2006-2010 Gerhard Häring <gh@ghaering.de>
@ -302,6 +302,23 @@ class RegressionTests(unittest.TestCase):
cur.executemany("insert into b (baz) values (?)", cur.executemany("insert into b (baz) values (?)",
((i,) for i in foo())) ((i,) for i in foo()))
def CheckConvertTimestampMicrosecondPadding(self):
"""
http://bugs.python.org/issue14720
The microsecond parsing of convert_timestamp() should pad with zeros,
since the microsecond string "456" actually represents "456000".
"""
con = sqlite.connect(":memory:", detect_types=sqlite.PARSE_DECLTYPES)
cur = con.cursor()
cur.execute("CREATE TABLE t (x TIMESTAMP)")
cur.execute("INSERT INTO t (x) VALUES ('2012-04-04 15:06:00.456')")
cur.execute("SELECT * FROM t")
date = cur.fetchall()[0][0]
self.assertEqual(date, datetime.datetime(2012, 4, 4, 15, 6, 0, 456000))
def suite(): def suite():
regression_suite = unittest.makeSuite(RegressionTests, "Check") regression_suite = unittest.makeSuite(RegressionTests, "Check")

View file

@ -1068,6 +1068,7 @@ Anatoly Techtonik
Mikhail Terekhov Mikhail Terekhov
Richard M. Tew Richard M. Tew
Tobias Thelen Tobias Thelen
Lowe Thiderman
Nicolas M. Thiéry Nicolas M. Thiéry
James Thomas James Thomas
Robin Thomas Robin Thomas

View file

@ -227,6 +227,9 @@ Core and Builtins
Library Library
------- -------
- Issue #14720: sqlite3: Convert datetime microseconds correctly.
Patch by Lowe Thiderman.
- Issue #17225: JSON decoder now counts columns in the first line starting - Issue #17225: JSON decoder now counts columns in the first line starting
with 1, as in other lines. with 1, as in other lines.