mysql - mysql 中的 ActiveRecord DATETIME 列值

标签 mysql ruby-on-rails activerecord

我是 ActiveRecord 的新手,正在尝试做一些相当简单的事情。我在互联网上进行了搜索,但未能找到解决方案。

在 mysql 中,我有一个类型为 DATETIME 的表列。该表中已经有很多值。此列的一些示例值是 NULL0000-00-00 00:00:002009-04-30 10:30:22

使用 railsActiveRecord 我可以从数据库中检索记录。但是,当我请求 DATETIME 字段的值为 0000-00-00 00:00:00 时,我得到的结果是 nil 对象。

NULL 的数据库值也返回一个 nil 对象,这是有道理的。

2009-04-30 10:30:22 的数据库值返回 Thu, 30 Apr 2009 10:30:22 UTC +00:00 这也使得感觉。

我认为使用 _before_type_cast 可能会有帮助,但事实并非如此。

如何确定返回的对象的数据库值是否为 0000-00-00 00:00:00

最佳答案

Rails 似乎没有办法将日期强制转换为非零值。

没有办法解决这个问题的事实表明您可能正在以非最佳方式做某事,因此我的第一个建议是只迁移所有 0000-00-00 00:00:如果可以,将 00 值设置为 nil

如果那不是一个选项。您可以通过 sql 条件查找是否有任何一条记录具有 0000-00-00 00:00:00,如下所示:

Post.where("date_field = '0000-00-00 00:00:00' && id = ?", post.id).exists?

希望对您有所帮助。

关于mysql - mysql 中的 ActiveRecord DATETIME 列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283653/

相关文章:

ruby-on-rails - image_tag 在 Rails 3 中指向 assets/

ruby-on-rails - rails : Serve compressed static assets from Cloudfront

ruby-on-rails - 覆盖 to_xml 以收集 ActiveRecord 对象

php - 以这样的方式排列记录,即 D 类别总是在前面,然后是 E & F,并且它的比例为 1 :1

ruby-on-rails - rake db :migrate the correct command to re-sync schema. rb 是否与您的数据库架构一起使用?

mysql - SQL GROUP BY - 一列中有多个结果?

ruby-on-rails - rails : How do I cancel a save if before_update callback returns false?

ruby-on-rails - 按多列组合对结果集进行分组

php - mysqli 将位和整数作为字符串返回

MySQL合并多个表的数据