繁体   English   中英

查找日期范围内的记录

[英]Find records within date range

我设置了search_start_date和search_end_date,然后我想找到属于这个时间范围的记录。 但是我没有得到任何回复使用下面的代码。 我应该改变什么来使这项工作?

 search_start_date = "01-01-2013"
 search_end_date = "01-12-2013"
 @activities = @employee.activities
 projects = @activities.where("start_date >= ? and end_date =< ?", search_start_date, search_end_date)

编辑:我现在使用search_start_date = DateTime.new(2013, 1, 1) ,这似乎有效。

你使用的日期含糊不清。 目前尚不清楚它是MM-DD-YYYY还是DD-MM-YYYY。 根据您居住的地区,两者都可能是正确的。 使用默认的ruby明确格式YYYY-MM-DD甚至更好,使用实际的日期对象。

您还可以将字符串解析为日期,如下例所示。 我还纠正了第二个比较运算符,使其更简洁。 我不确定两者是否都能奏效。 而且不要忘了.all的情况下,你不只是把它从你querstion的故意。

search_start_date = Date.strptime("01-01-2013", "%d-%m-%Y")
search_end_date   = Date.strptime("01-12-2013", "%d-%m-%Y")

projects = @activities.where("start_date >= ? and end_date <= ?", search_start_date, search_end_date).all

您需要将“Date”或“Time”对象提供给ActiveRecord查询,尝试以下方法:

 search_start_date = Date.parse("01-01-2013")
 search_end_date = Date.parse("01-12-2013")
 projects = @activities.where("start_date >= ? and end_date =< ?", search_start_date, search_end_date)

只需修改@derekyau解决方案: -

search_start_date = "01-01-2013".to_date
 search_end_date = "01-12-2013".to_date
 projects = @activities.where("start_date >= ? and end_date =< ?", search_start_date, search_end_date)

编辑:我现在使用search_start_date = DateTime.new(2013, 1, 1) ,这似乎有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM