我正在构建一个Rails应用程序,该应用程序可以根据计划创建订单。计划采用hh:mm格式的时间,并且每周的每一天都有标记。一个方法会定期检查计划,并创建计划所需的任何订单。
首先,我使用Ruby DateTime对象构建本周订单的时间,然后检查它是否存在,如果不存在则创建,例如:
因此,区别在于部分秒字段中多了三个零。我理解SQLite没有真正的日期类型,因此这些不同只是因为字符串不同。我现在遇到的问题是,似乎无法强制插入字符串的格式。例如,即使我执行以下操作:
首先,我使用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' ) )
插入语句仍使用“标准”格式 - 但在我的实例上有6个零,而在另一个实例上有9个。