mirror of https://github.com/python/cpython
Issue #14720: Enhance sqlite3 microsecond conversion, document its behavior
This commit is contained in:
parent
ba48264bce
commit
e41a4634c9
|
@ -832,6 +832,10 @@ The following example demonstrates this.
|
|||
|
||||
.. literalinclude:: ../includes/sqlite3/pysqlite_datetime.py
|
||||
|
||||
If a timestamp stored in SQLite has a fractional part longer than 6
|
||||
numbers, its value will be truncated to microsecond precision by the
|
||||
timestamp converter.
|
||||
|
||||
|
||||
.. _sqlite3-controlling-transactions:
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#-*- coding: ISO-8859-1 -*-
|
||||
# -*- coding: iso-8859-1 -*-
|
||||
# pysqlite2/dbapi2.py: the DB-API 2.0 interface
|
||||
#
|
||||
# Copyright (C) 2004-2005 Gerhard Häring <gh@ghaering.de>
|
||||
|
@ -68,7 +68,7 @@ def register_adapters_and_converters():
|
|||
timepart_full = timepart.split(".")
|
||||
hours, minutes, seconds = map(int, timepart_full[0].split(":"))
|
||||
if len(timepart_full) == 2:
|
||||
microseconds = int('{:0<6}'.format(timepart_full[1].decode()))
|
||||
microseconds = int('{:0<6.6}'.format(timepart_full[1].decode()))
|
||||
else:
|
||||
microseconds = 0
|
||||
|
||||
|
|
|
@ -296,11 +296,20 @@ class RegressionTests(unittest.TestCase):
|
|||
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))
|
||||
# Microseconds should be 456000
|
||||
cur.execute("INSERT INTO t (x) VALUES ('2012-04-04 15:06:00.456')")
|
||||
|
||||
# Microseconds should be truncated to 123456
|
||||
cur.execute("INSERT INTO t (x) VALUES ('2012-04-04 15:06:00.123456789')")
|
||||
|
||||
cur.execute("SELECT * FROM t")
|
||||
values = [x[0] for x in cur.fetchall()]
|
||||
|
||||
self.assertEqual(values, [
|
||||
datetime.datetime(2012, 4, 4, 15, 6, 0, 456000),
|
||||
datetime.datetime(2012, 4, 4, 15, 6, 0, 123456),
|
||||
])
|
||||
|
||||
|
||||
def suite():
|
||||
|
|
Loading…
Reference in New Issue