在获取结果时,仅考虑从日期开始的前两个值

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 仍然没有得到

以上是关于在获取结果时,仅考虑从日期开始的前两个值的主要内容,如果未能解决你的问题,请参考以下文章

SQL 日期过滤器:当开始日期 = 结束日期时返回结果

js-获取两个字符串日期的相隔周

查询两个日期之间的数据

java中想获取前一天的开始和结束的两个毫秒数,请问分别怎样获取???????

Google Analytics 事件 - 日期范围值

如何从 Web API 获取十进制值 .00