我有一个方法,其中 self
是一个简单的 stock.move
记录。此外,您可能知道,stock.move
模型有一个名为 date
的 Datetime
字段。如果我在方法中编写这段代码:
lines = self.search([
('date', '=', self.date),
])
它应该至少返回当前行。它确实如此,但仅在某些服务器中。其他人一无所获。为什么?因为如果我在 PostgreSQL 中执行查询以获取 date
,工作正常的服务器返回 2017-12-27 17:10:00,但是,服务器工作错误返回 2017-12-27 17:10:00.131112。因此,对于毫秒级的情况,ORM search
方法是这样做的:
lines = self.search([
(2017-12-27 17:10:00.131112, '=', 2017-12-27 17:10:00),
])
self.date
返回没有毫秒的 Datetime
值,这就是比较失败的原因。我也需要获取毫秒数。
我该如何管理?
最佳答案
绝对正确,我在这里确认 odoo Datetime 不以 UTC 格式保存时间戳,它以 UTC 格式存储日期时间。即使从 odoo 5.0 开始,我们就一直在努力,直到现在。
在 Odoo 11.0 中
id | create_date | write_date | date_expected
-----+----------------------------+----------------------------+---------------------
41 | 2017-12-21 13:06:06.927814 | 2017-12-21 13:06:06.927814 | 2017-12-21 13:01:30
7 | 2017-12-21 08:33:22.431197 | 2017-12-21 08:33:22.431197 | 2017-12-21 08:31:54
42 | 2017-12-21 13:07:03.659194 | 2017-12-21 13:07:03.659194 | 2017-12-21 13:06:54
2 | 2017-12-21 07:24:24.953689 | 2017-12-21 07:24:24.953689 | 2017-12-21 07:24:25
是的。 odoo create_date, write_date 能够给你毫秒,可能对你有帮助。但确定在 Datetime 中,不允许这样做...
如果您确实需要基于毫秒的需求,添加附加字段以存储毫秒,这一切都行得通。
问题在 odoo Community
和 Enterprise
版本中都存在。
*** 需要额外的小定制
关于python - 为什么 Odoo 删除日期时间字段中的毫秒数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48010835/