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

GridDB Python客户端插入带时区datetime至TIMESTAMP列报错及格式要求咨询

GridDB Python客户端TIMESTAMP列插入带时区datetime报错问题解答

结论

GridDB Python客户端要求TIMESTAMP类型的输入必须是无时区信息的naive datetime,或转换为UTC时区的datetime对象,客户端序列化层目前不直接支持带非UTC时区信息的datetime对象。

原因说明

GridDB的TIMESTAMP类型底层存储的是UTC时间戳,Python客户端在处理带时区的datetime时,仅能正确识别UTC时区的对象。对于其他时区的带tzinfo的datetime,由于序列化逻辑不兼容,会抛出GSException: [140001] Row format error错误。

有效解决方案

以下几种方式均可解决插入报错问题:

  • 转换为无时区的naive datetime(需确保该时间基于业务约定的基准时区,避免时间偏差)
    from datetime import datetime
    import pytz
    
    container = store.get_container("events_ts")
    ts = datetime.now(pytz.timezone("Asia/Kolkata")).replace(tzinfo=None)
    container.put((ts, "login"))
    
  • 转换为UTC时区的datetime对象
    from datetime import datetime
    import pytz
    
    container = store.get_container("events_ts")
    ts = datetime.now(pytz.timezone("Asia/Kolkata")).astimezone(pytz.UTC)
    container.put((ts, "login"))
    
  • 直接构造UTC时间(适用于业务允许以UTC作为基准时间的场景)
    from datetime import datetime
    import pytz
    
    container = store.get_container("events_ts")
    ts = datetime.utcnow().replace(tzinfo=pytz.UTC)
    container.put((ts, "login"))
    

补充验证

你已尝试的设置tzinfo=None和插入前转换为UTC操作均为有效解决方式,这也印证了客户端对TIMESTAMP输入的格式限制。该行为在GridDB CE和GridDB Cloud版本中一致,属于客户端序列化层的既定限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 21:12:11