查找存在时间戳的记录

时间:2014-10-01 00:35:00

标签: postgresql ruby-on-rails-4 rails-activerecord rails-postgresql postgresql-9.3

我正在从SQLite迁移到PostgreSQL,以下查询不再有效:

where("my_timestamp is NOT NULL and my_timestamp != ''")

如何查找具有特定(日期时间)属性的所有记录?

1 个答案:

答案 0 :(得分:3)

假设您的my_timestamp列是真实的timestamp(即ActiveRecord用语中的t.datetime),那么一个简单的NOT NULL测试就足够了:

where('my_timstamp is not null')

如果是这种情况,那么您的查询应该会出现如下错误:

invalid input syntax for type timestamp: ""

指着你的my_timestamp != ''测试。您在SQLite中与空字符串的比较工作正常,因为SQLite没有实时时间戳类型,它只在文本列中使用ISO 8601格式的字符串;此数据类型问题也是您在SQLite的时间戳列中首先使用''的原因。