gpt4 book ai didi

ruby-on-rails - SQLite/Rails 日期时间查询问题

转载 作者:行者123 更新时间:2023-12-03 15:53:01 25 4
gpt4 key购买 nike

我正在构建一个 Rails 应用程序,它根据时间表创建订单。时间表有一个格式为 hh:mm 的时间,并为一周中的每一天打勾。一种方法偶尔会检查计划,并创建计划所需的任何订单。

首先,我在 Ruby DateTime 对象中建立本周订单的时间,然后检查它是否存在,如果不存在则创建,例如:

order = Order.where( :delivery_datetime = del_datetime )
unless order.any?
Order.create( :status => 'Estimated', :delivery_datetime => del_datetime )
end

这在我的机器上按预期工作,但是当其他人从存储库中获取它时,它每次都会重新创建订单。我调查了它使用的 SQL,问题似乎是它创建了一个与插入语句略有不同的 where 子句:

SELECT COUNT(*) FROM orders WHERE delivery_datetime = '2011-06-30 18:00:00.000000'
INSERT INTO orders (delivery_datetime) VALUES ('2011-06-30 18:00:00.000000000')

所以区别在于部分第二字段中的三个额外零。我知道 SQLite 没有真正的日期类型,所以它们只是因为字符串不同而不同。我现在遇到的问题是我似乎无法强制插入字符串的格式。例如。即使我执行以下操作:

Order.create( :status => 'Estimated',
:delivery_datetime => del_datetime.strftime( '%Y-%m-%d %H:%M' ) )

insert 语句仍然使用“标准”格式——但在我的实例上有 6 个零,在另一个实例上有 9 个。

最佳答案

没有答案!之前在 Stack Overflow 上没有看到过。现在,我通过将数据库字段声明为字符串来“修复”它,然后使用 strftime 确保日期格式保持不变。这可行,但似乎并不理想。

在阅读了 Sqlite 文档中关于数据类型是“错误特征”的所有内容之后,我正在考虑将其放弃用于 Postgres 或类似的。我希望日期时间成为日期时间,并且它不会随机决定 18:00:00.000000 和 18:00:00.000000000 是不同的时间...

关于ruby-on-rails - SQLite/Rails 日期时间查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6533267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com