From 91b10538315adbbb9e27f5340cd91559dcd0973b Mon Sep 17 00:00:00 2001 From: Gord Thompson Date: Thu, 19 Dec 2019 05:42:19 -0700 Subject: [PATCH] Fix DATETIMEOFFSET formatting to preserve fractional seconds. Fixes: #5045 --- lib/sqlalchemy/dialects/mssql/pyodbc.py | 4 ++-- test/dialect/mssql/test_types.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/sqlalchemy/dialects/mssql/pyodbc.py b/lib/sqlalchemy/dialects/mssql/pyodbc.py index 9ce6861c06..c3304a7055 100644 --- a/lib/sqlalchemy/dialects/mssql/pyodbc.py +++ b/lib/sqlalchemy/dialects/mssql/pyodbc.py @@ -235,9 +235,9 @@ class _ODBCDateTimeOffset(DATETIMEOFFSET): def bind_processor(self, dialect): def process(value): """Convert to string format required by T-SQL.""" - dto_string = value.strftime("%Y-%m-%d %H:%M:%S %z") + dto_string = value.strftime("%Y-%m-%d %H:%M:%S.%f %z") # offset needs a colon, e.g., -0700 -> -07:00 - return dto_string[:23] + ":" + dto_string[23:] + return dto_string[:30] + ":" + dto_string[30:] return process diff --git a/test/dialect/mssql/test_types.py b/test/dialect/mssql/test_types.py index f837d3add0..3cf9d9036d 100644 --- a/test/dialect/mssql/test_types.py +++ b/test/dialect/mssql/test_types.py @@ -735,7 +735,7 @@ class TypeRoundTripTest( 11, 2, 32, - 0, + 123456, util.timezone(datetime.timedelta(hours=1)), ) t.insert().execute( -- 2.47.3