在获取结果时,仅考虑从日期开始的前两个值
Posted
技术标签:
【中文标题】在获取结果时,仅考虑从日期开始的前两个值【英文标题】:only the first two values is considering from the date while fetching the result 【发布时间】:2017-09-07 21:44:51 【问题描述】:在这里我想根据我想给出的日期得到结果,但返回整个结果数据库看起来像这样
数据库看起来像这样
customer_account_id customer_id date code
11 55 01-01-2017 ALI HAJI
12 55 02-01-2017 ALI HAJI
13 55 03-01-2017 ALI HAJI
125 65 01-02-2017 SHARFU
126 55 02-02-2017 ALI HAJI
127 55 03-02-2017 ALI HAJI
128 55 31-01-2017 ALI HAJI
控制器看起来像这样
public function report()
$data['result']= $this->Account_model->get_report($_POST['from_date'],$to1['to_date'])->result();
$this->load->view('report_payment_details',$data);
我的模型是这样的
public function get_report($from1,$to1)
$from=date('d-m-Y',strtotime($from1));
var_dump($from);
$to=date('d-m-Y',strtotime($to1));
var_dump($to);
$this->db->order_by('customer_account_id','desc');
$this->db->where('date >=', $from);
$this->db->where('date <=', $to);
return $this->db->get('customer_accounts');
在这里,如果我选择 01-01-2017 和 03-01-2017 之间的日期,那么也会显示整个结果。问题只是从日期开始考虑前两个值,例如如果我考虑 01- 01-2017 这里只有 01 正在考虑并且没有。请帮我解决这个问题
【问题讨论】:
任何人都有任何想法 【参考方案1】:如果你想坚持使用 VARCHAR,也许你可以尝试使用 STR_TO_DATE
$from=date('d-m-Y',strtotime($from1));
var_dump($from);
$to=date('d-m-Y',strtotime($to1));
var_dump($to);
$this->db->order_by('customer_account_id','desc');
$this->db->where("STR_TO_DATE(`date`,'%d-%m-%Y') >=", "STR_TO_DATE('".$from."','%d-%m-%Y')");
$this->db->where("STR_TO_DATE(`date`,'%d-%m-%Y') <=", "STR_TO_DATE('".$to."','%d-%m-%Y')");
return $this->db->get('customer_accounts');
【讨论】:
日期在数据库中存储为varchar。这会是获取结果的问题 是的,这会在需要过滤日期时引起问题。请改用 DATETIME 我想要 varchar 本身的结果,我们可以转换它并使用 它没有将 VARCHAR 转换为 STR_TO_DATE 仍然没有得到以上是关于在获取结果时,仅考虑从日期开始的前两个值的主要内容,如果未能解决你的问题,请参考以下文章