0

我设置了一个 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),这似乎有效。

4

3 回答 3

1

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

您还可以将字符串解析为日期,如下例所示。我还更正了第二个比较运算符,使其更简洁。我不确定两者是否都能奏效。并且不要忘记.all以防万一您不是故意将其排除在外。

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
于 2013-09-12T08:32:50.427 回答
1

您需要将“日期”或“时间”对象输入 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)
于 2013-09-12T08:35:14.283 回答
0

只需修改@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),这似乎有效。

于 2013-09-12T09:10:13.670 回答