我正在从SQLite迁移到PostgreSQL,以下查询不再有效:
where("my_timestamp is NOT NULL and my_timestamp != ''")
如何查找具有特定(日期时间)属性的所有记录?
答案 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的时间戳列中首先使用''
的原因。