Python преобразовать тип timedelta в тип времени sql - PullRequest
1 голос
/ 08 апреля 2019

Недопустимый тип данных при использовании результата дельта времени Python и сохранении в тип времени на сервере MS SQL.

start_time = (datetime.fromtimestamp(1553182159222 / 1e3))
end_time = (datetime.fromtimestamp(1553182159924/ 1e3))
run_time = end_time - start_time

, который возвращает:

0:00:00.702000

Это правильная математика для timedelta, но я получаю сообщение об ошибке при использовании переменной run_time в качестве входных данных для типа данных SQL Server TIME.

1 Ответ

0 голосов
/ 09 апреля 2019

timedelta имеет такое же строковое представление, как и SQL Server, поэтому просто вставьте его в виде строки.

SQL:

CREATE TABLE test
(
    timedelta time
)

Python:

start_time = (datetime.fromtimestamp(1553182159222 / 1e3))
end_time = (datetime.fromtimestamp(1553182159924/ 1e3))
run_time = end_time - start_time

cursor = cnxn.cursor()
cursor.execute("insert into test (timedelta) values (?)", str(run_time))
cnxn.commit()

cursor.execute("select timedelta from test")
row = cursor.fetchone()
while row:
    print(str(row[0]))
    row = cursor.fetchone()

Вывод:

00:00:00.702000
...