Soo*_*ndu 2 activerecord ruby-on-rails
我有一个这样的查询:
User.where("medical_card_expiry_date BETWEEN ? AND ?",Time.now.to_date,(Time.now+10.years).to_date)
Run Code Online (Sandbox Code Playgroud)
如果medical_card_expiry_date是Date格式,则此查询可以正常工作,但不幸的是它是 a String,因此不会产生预期的结果。
我可以将where 子句本身转换medical_card_expiry_date为Dateinsdide 吗?Rails 中是否有一种方法可以使这项工作?
在你的查询中,Rails 不能为你做任何事情,你需要让数据库在使用该字段时进行转换。您可以STR_TO_DATE在 MySQL中使用(如果这是您正在使用的,否则请找到相关的替代方法),如下所示:
User.where("STR_TO_DATE(medical_card_expiry_date, '%m/%d/%Y') BETWEEN ? AND ?",Time.now.to_date,(Time.now+10.years).to_date)
Run Code Online (Sandbox Code Playgroud)
根据评论,这是一个 Postgres 版本
User.where("to_date(medical_card_expiry_date, 'DD MM YY') BETWEEN ? AND ?",Time.now.to_date,(Time.now+10.years).to_date)
Run Code Online (Sandbox Code Playgroud)
您需要DD MM YY根据数据库中实际存储的内容更改格式元素 ( )。可以在此处找到指南http://www.postgresql.org/docs/8.1/static/functions-formatting.html
| 归档时间: |
|
| 查看次数: |
2354 次 |
| 最近记录: |