我写了这个小搜索查询:
User.where("strftime('%Y', birthday) = ?", 1994)
但不知何故我没有搜索结果,尽管我现在有几个用户在1994年过生日。在用户表中birthday
被定义为date
现在我有两个想法可以解决我的问题:
1.我可以检查"strftime('%Y', birthday)
对特定用户或整个用户集合的结果。 但我不知道这个表达!也许你知道这个表达式?
2.你知道我做错了什么,你有答案吗?
谢谢!
答案 0 :(得分:1)
在Rails中,您可以编写如下查询:
User.where("birthday BETWEEN '?-01-01' AND '?-12-31'",1994,1994)
请参阅此帖,了解为什么与使用“YEAR”的内容相比,这种格式在性能方面表现良好:SQL query where() date's year is $year。
答案 1 :(得分:0)
您的里程可能会有所不同,但我通过使用它的基础字符串格式查询日期列来解决其中一些问题......
User.where("birthday like ?", "1994-%")
我太懒了,不能查看sqlite对regexen的支持,但是如果你可以使用它们那么你也可以试试
User.where birthday: /^1994-\d{2}-\d{2}/
答案 2 :(得分:-1)
你应该使用类似的东西
User.where("YEAR(birthday) = ?", 1994)
参考:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_year