#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. Подумайте о принятии и одобрении ответа, чтобы будущие пользователи знали, что он сработал.