Commit 9e14755b authored by Petri Lehtinen's avatar Petri Lehtinen

Issue #14720: sqlite3: Convert datetime microseconds correctly

Patch by Lowe Thiderman
parent c23178ba
...@@ -68,7 +68,7 @@ def register_adapters_and_converters(): ...@@ -68,7 +68,7 @@ def register_adapters_and_converters():
timepart_full = timepart.split(".") timepart_full = timepart.split(".")
hours, minutes, seconds = map(int, timepart_full[0].split(":")) hours, minutes, seconds = map(int, timepart_full[0].split(":"))
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
......
#-*- 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-2007 Gerhard Hring <gh@ghaering.de> # Copyright (C) 2006-2007 Gerhard Hring <gh@ghaering.de>
...@@ -285,6 +285,23 @@ class RegressionTests(unittest.TestCase): ...@@ -285,6 +285,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")
......
...@@ -990,6 +990,7 @@ Anatoly Techtonik ...@@ -990,6 +990,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
......
...@@ -208,6 +208,9 @@ Core and Builtins ...@@ -208,6 +208,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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment