Python преобразует тип timedelta в тип времени sql

#python #sql #sql-server #datetime #timedelta

#python #sql #sql-сервер #дата и время #timedelta

Вопрос:

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

 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.

Комментарии:

1. Это не похоже на T-SQL, а в SQL Server нет timedelta типа, fromtimestamp() метода или возможности вычитать значения datetime в большинстве контекстов. Можете ли вы показать фактический запрос, который генерирует эту ошибку, и точное сообщение об ошибке?

Ответ №1:

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
  

Комментарии:

1. Спасибо — мне не хватало приведения его в виде строки при вставке.

2. Подумайте о принятии и одобрении ответа, чтобы будущие пользователи знали, что он сработал.