返回日期为年份

时间:2013-11-21 16:20:23

标签: ruby-on-rails ruby sqlite

我写了这个小搜索查询:

 User.where("strftime('%Y', birthday) = ?", 1994)

但不知何故我没有搜索结果,尽管我现在有几个用户在1994年过生日。在用户表中birthday被定义为date

现在我有两个想法可以解决我的问题:

1.我可以检查"strftime('%Y', birthday)对特定用户或整个用户集合的结果。 但我不知道这个表达!也许你知道这个表达式?

2.你知道我做错了什么,你有答案吗?

谢谢!

3 个答案:

答案 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