【问题标题】:How to get Records in Specific date range如何获取特定日期范围内的记录
【发布时间】:2014-04-03 15:02:32
【问题描述】:

我的查询不起作用。我正在使用代码点火器。我想根据日期范围过滤获取这些记录的列表。

这是我的控制器:

public function filter($type){
  $fromdt = date("Y-d-m",strtotime($this->input->post("from")));
  $todt = date("Y-d-m",strtotime($this->input->post("to")));
  $session_data = $this->session->userdata('logged_in');
  $this->load->model("mymodel");    
  print_r($this->mymodel->filterdata($fromdt,$todt,$session_data['id'])); 
}

这是我的模型:

public function filterdata($from,$to,$userid){
  $query = $this->db->query("SELECT table1.id,table1.quest,table1.post_id,table1.quote_id,table2.in_dairy FROM table1,table2 
  WHERE table2.quote_id = table1.id AND table2.reader_id='$userid' 
  AND table1.in_dairy='yes' AND table2.dairy_dt>='$from' AND 
  table2.dairy_dt<='$to'");
  return $query->result();
}

注意:我的dairy_dt 字段是Mysql 中的TYPE OF DATE。我不知道为什么它显示一个空结果..

【问题讨论】:

  • 将 $fromdt 和 $todt 转换为 Y-m-d 后的样子?
  • 没有桌子时你写了table12.quote_id12。你也在做AND table2.dairy_dt&gt;='$from' AND table1.dairy_dt&lt;='$to'。这些应该来自同一个表
  • 这是我的写作错误。查看最新编辑

标签: php mysql sql codeigniter date


【解决方案1】:

更新你的函数后尝试

public function filter($type){
   $fromdt = date("Y-m-d",strtotime($this->input->post("from")));
   $todt = date("Y-m-d",strtotime($this->input->post("to")));
   $session_data = $this->session->userdata('logged_in');
   $this->load->model("mymodel");    
   print_r($this->mymodel->filterdata($fromdt,$todt,$session_data['id'])); 
}

MySql 日期格式如下:Y-m-d

【讨论】:

  • 它仍然返回空数组
  • 您能提供您的架构、示例数据吗?如果您从条件中删除日期,您是否获得数据您是否获得数据?
  • 是的,如果我从条件中删除日期,我就会得到数据
  • 我的 wild 猜测是您传递的日期值不是 "Y-m-d" 格式。你能给我你提交的确切日期值吗?
【解决方案2】:

如果您没有分配您所做的查询,为什么要返回 $query->result()?我的意思是,

$this->db->query("SELECT table1.....
return $query->result();

$query 值在哪里?,你应该这样做

$query = $this->db->query("SELECT table1.....
return $query->result();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2012-03-23
    • 1970-01-01
    • 2021-04-17
    • 2017-12-02
    • 2020-10-09
    相关资源
    最近更新 更多