Смещение часового пояса установлено на +00: 00 для записей отметок времени при записи кадра данных pandas в таблицу базы данных MSSQL, хотя отметки времени в кадре данных содержат смещения CE (S) T +02: 00.
Я создаю простую таблицу с тремя столбцами, в одном из которых содержатся метки времени с учетом даты и времени. Указанный тип данных столбца был установлен в datetimeoffset (7), когда таблица была создана на сервере SQL.
name = ['price']*24
values = np.random.rand(24)
starttimes = pd.date_range('2019-09-10 00:00', '2019-09-10 23:00', freq='h', tz='CET')
df = pd.DataFrame({'start_time': starttimes, 'values': values, 'item': name})
engine = sqlalchemy.create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')
df.to_sql(
name='test_table',
con=engine,
index=False,
if_exists='append',
dtype={'start_time': DateTime(timezone=True)}
)
Когда кадр данных вставляется в таблицу в базе данных, смещение становится +00: 00 вместо +02: 00. Например, исходный фрейм данных имеет запись 2019-09-10 00: 00: 00 + 02: 00, которая на сервере становится 2019-09-10 00: 00: 00.0000000 +00: 00
Проблемасохраняется, когда я использую pyodbc вместо pymssql, для которого у меня установлен драйвер Microsoft ODBC 17.