首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过用户自定义的方法从sqlite3 by date中挑选记录?

如何通过用户自定义的方法从sqlite3 by date中挑选记录?
EN

Stack Overflow用户
提问于 2012-04-06 15:56:01
回答 2查看 98关注 0票数 0

我有一个名为GuestOrder的模型:

代码语言:javascript
复制
class GuestOrder < ActiveRecord::Base
end

# == Schema Information
#
# Table name: guest_orders
#
#  id             :integer         not null, primary key
#  notes          :string(255)
#  adults         :integer
#  children       :integer
#  created        :datetime
#  placed         :datetime
#  billed         :datetime
#  user_id        :integer
#  guest_table_id :integer
#  take_away_id   :integer
#  created_at     :datetime
#  updated_at     :datetime

和一个控制器

代码语言:javascript
复制
class ApiController < ApplicationController
  def getOrdersByDate
    @guest_orders = GuestOrder.where(:created_at => (params[:created]))
    render json: @guest_orders
  end
end

routes.rb

代码语言:javascript
复制
  match '/api/getOrdersByDate'

当我尝试在url中获取此内容时

代码语言:javascript
复制
http://localhost:3000/api/getOrdersByDate?:created=2012-4-5

我得到了所有不受日期限制的记录

在服务器上,我得到了select * from guest_orders

代码语言:javascript
复制
Started GET "/api/getOrdersByDate?:created=2012-4-5" for 127.0.0.1 at 2012-04-06 13:19:59 +0530
  Processing by ApiController#getOrdersByDate as HTML
  Parameters: {":created"=>"2012-4-5"}
  GuestOrder Load (26.3ms)  SELECT "guest_orders".* FROM "guest_orders"
Completed 200 OK in 47ms (Views: 1.5ms | ActiveRecord: 26.3ms)


Started GET "/api/getOrdersByDate?:created=2012-4-5" for 127.0.0.1 at 2012-04-06 13:21:21 +0530
  Processing by ApiController#getOrdersByDate as HTML
  Parameters: {":created"=>"2012-4-5"}
  GuestOrder Load (1.7ms)  SELECT "guest_orders".* FROM "guest_orders"
Completed 200 OK in 47ms (Views: 1.4ms | ActiveRecord: 1.7ms)

my DB中的记录在date 2012-03-22, 2012-04-05, 2012-04-06中有记录

如何在getOrdersByDate中查询以获取特定日期的记录。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-06 16:05:59

您不需要在请求中使用冒号,HashWithIndifferentAccess将为您执行sym查找。

代码语言:javascript
复制
http://localhost:3000/api/getOrdersByDate?created=2012-4-5

但是这个问题看起来很有趣,因为将nil传递给where条件应该会导致以下查询:

代码语言:javascript
复制
SELECT "guest_orders".* FROM "guest_orders" WHERE "created_at" IS NULL

在您的示例中,缺少整个SQL WHERE条件。

更新#1

看起来需要重新装填。

要获取某个日期的记录,可以使用以下方法:

代码语言:javascript
复制
time = Time.zone.parse(params[:created])
range = time.beginning_of_day..time.end_of_day
@guest_orders = GuestOrder.where(:created_at => range)

更新#2

如果您有开始日期和结束日期:

代码语言:javascript
复制
t_start = Time.zone.parse(params[:start])
t_end = Time.zone.parse(params[:end])
range = t_start.beginning_of_day..t_end.end_of_day
@guest_orders = GuestOrder.where(:created_at => range)
票数 2
EN

Stack Overflow用户

发布于 2012-04-06 16:07:40

您可以使用以下查询按日期获取记录

代码语言:javascript
复制
    @results = GuestOrder.where("created_at = ? ", params[:created])

试试看

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10040732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档