【问题标题】:Python convert timedelta type to sql time typePython将timedelta类型转换为sql时间类型
【发布时间】:2019-04-08 19:39:37
【问题描述】:

使用 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 的输入时出错。

【问题讨论】:

  • 这看起来不像 T-SQL,而且 SQL Server 没有timedelta 类型、fromtimestamp() 方法,也没有在大多数情况下减去日期时间值的能力。您能否显示产生此错误的实际查询以及确切的错误消息?

标签: python sql sql-server datetime timedelta


【解决方案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

【讨论】:

  • 谢谢 - 我错过了在插入时将其转换为字符串。
  • 考虑接受并支持答案,以便未来的用户知道它有效。
猜你喜欢
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多