diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2020-01-01 15:14:43 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-01-01 15:14:43 +0000 |
| commit | 4e7c789331c9ccf86ad0040175764d361d21b4f3 (patch) | |
| tree | 021f0de1323512d86fb28c0d9ae43105f49a8af2 | |
| parent | cf126b49e7c88a0eb58920e2e85b628651fbcfd2 (diff) | |
| parent | 0d316e42f0645283c222f050c403c9c8d20463ec (diff) | |
| download | sqlalchemy-4e7c789331c9ccf86ad0040175764d361d21b4f3.tar.gz | |
Merge "Fix DATETIMEOFFSET formatting to preserve fractional seconds."
| -rw-r--r-- | doc/build/changelog/unreleased_13/5045.rst | 7 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mssql/pyodbc.py | 4 | ||||
| -rw-r--r-- | test/dialect/mssql/test_types.py | 2 |
3 files changed, 10 insertions, 3 deletions
diff --git a/doc/build/changelog/unreleased_13/5045.rst b/doc/build/changelog/unreleased_13/5045.rst new file mode 100644 index 000000000..020e723a0 --- /dev/null +++ b/doc/build/changelog/unreleased_13/5045.rst @@ -0,0 +1,7 @@ +.. change:: + :tags: bug, mssql + :tickets: 5045 + + Fixed issue where a timezone-aware ``datetime`` value being converted to + string for use as a parameter value of a :class:`.mssql.DATETIMEOFFSET` + column was omitting the fractional seconds. diff --git a/lib/sqlalchemy/dialects/mssql/pyodbc.py b/lib/sqlalchemy/dialects/mssql/pyodbc.py index 9ce6861c0..c3304a705 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 f837d3add..3cf9d9036 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( |
