Python + sqlalchemy:如何在数据库端处理timedelta?

3 投票
1 回答
3241 浏览
提问于 2025-04-17 12:31

我在用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'里的一个时间戳列'date_buy',我不想在Python里用datetime.datetime.now()来获取更新时间,而是想在数据库里完成这个操作,也就是说,我更希望用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

1 个回答

2

这个警告是:

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

这意味着你的数据被截断了。请检查一下你打算存储时间对象的字段类型。它的意思是你试图把一个日期时间值存储为DOUBLE类型。

如果这样还不能解决问题,那就给个代码例子,这样我们能更好地理解你想要做什么。

撰写回答