Skip to main content
 首页 » 编程设计

Python + sqlalchemy : how to process timedelta on database side

2025年05月04日8jyk

用 Python 编码,我想像这样插入在数据库端处理的时间:

time = func.now()-datetime.timedelta(days=100) 

或

time = func.current_timestamp()-datetime.timedelta(days=100) 

但不知何故无法通过,看到警告:

sqlalchemy\engine\default.py:330: Warning: Truncated incorrect DOUBLE value: '1970-01-04 00:00:00' 

有什么办法让它变直吗?谢谢。

================================

我想更新表“Purchase”中的 TIMESTAMP 列“date_buy”,而不是使用 datetime.datetime.now() 在 python 中获取更新时间,我想在数据库中完成此操作,这意味着我更喜欢 func.now():

time = func.current_timestamp()-datetime.timedelta(days=100) 
# time = datetime.datetime.now()-datetime.timedelta(days=100) 
session.execute(update(Purchase).values(date_buy=time).where(Purchase.c.id == 11)) 

=================================

解决了。感谢 Bryan 和他的帖子: http://groups.google.com/group/sqlalchemy/browse_thread/thread/a67d4f179e01b98a/ee688a0b8a999f52?hl=en&lnk=gst&q=date_add#ee688a0b8a999f52

请您参考如下方法:

警告是

警告:截断不正确的 DOUBLE 值:'1970-01-04 00:00:00'

意味着它会截断您的数据。请检查您要存储时间对象的字段类型。 它表示您正在尝试使用日期时间值存储 DOUBLE 值。

如果这不能解决问题,那么只需提供一些代码示例,以便我们了解您要做什么。