python - 为什么 Odoo 删除日期时间字段中的毫秒数?

标签 python postgresql python-2.7 odoo-8 odoo

我有一个方法,其中 self 是一个简单的 stock.move 记录。此外,您可能知道,stock.move 模型有一个名为 dateDatetime 字段。如果我在方法中编写这段代码:

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 CommunityEnterprise 版本中都存在。

*** 需要额外的小定制

关于python - 为什么 Odoo 删除日期时间字段中的毫秒数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48010835/

相关文章:

Python:有效比较列表的第一个元素

python - python中唯一的二进制字符串

python - 解释一下这个 re 的行为

python - Matplotlib Artist 中的 clip_box 是什么意思?

python - 是我一个人还是 Windows 上新的 Python future 模块出现严重问题

python - 我如何通过 pysftp 监视文件传输的进度

postgresql - 当 PostgreSQL 进程为 "idle in transaction"时,这意味着什么?

database - Apache Felix 无法访问 Postgres JDBC

python - Web.py SQL 查询提供奇数数据

python - 使用 Python 请求传递登录名/密码