You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GridDB Cloud Python客户端向TIMESTAMP列插入datetime对象的正确方法

向GridDB Cloud的TIMESTAMP列插入Python datetime对象的正确方式

问题场景

在Ubuntu 22.04系统上使用GridDB Cloud(免费版)及官方最新pip版本的Python客户端,容器Schema定义如下:

device_id STRING,
created_at TIMESTAMP,
temperature DOUBLE

尝试插入带当前时间戳的数据时触发错误:

from datetime import datetime

row = ["sensor_1", datetime.now(), 21.5]
container.put(row)

错误信息:

griddb.TimeConversionError: Invalid format for TIMESTAMP

尝试转换为ISO格式字符串后仍无效:

row = ["sensor_1", datetime.now().isoformat(), 21.5]

正确解决方案

GridDB Python客户端对TIMESTAMP类型的支持需要特定格式的输入,以下两种方式均有效:

方式1:传入毫秒级UTC时间戳数值

GridDB的TIMESTAMP本质存储的是从1970-01-01 UTC开始的毫秒数,直接转换为该数值是最可靠的方式:

from datetime import datetime

# 将当前时间转换为毫秒级UTC时间戳
current_timestamp = int(datetime.now().timestamp() * 1000)
row = ["sensor_1", current_timestamp, 21.5]
container.put(row)

方式2:使用严格格式的UTC时间字符串

若要使用字符串格式,必须遵循YYYY-MM-DDTHH:MM:SS.fffZ的标准UTC格式(需包含毫秒部分和结尾的Z标识时区):

from datetime import datetime

# 生成符合要求的UTC时间字符串
current_time_str = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z"
row = ["sensor_1", current_time_str, 21.5]
container.put(row)

关键说明

  • 直接传入Python原生datetime对象不被客户端支持,必须转换为上述两种格式之一。
  • 使用时间戳数值的方式避免了时区和格式解析的问题,推荐优先使用。

内容的提问来源于stack exchange,提问作者Imtiaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:52:41