2014-04-15 66 views
0
function details_klanten($idKlant,$start,$eind){ 
    $this->db->select(' Project.idProject, 
         Project.Titel, 
         Project.idProjecttype, 
         Project.Begindatum, 
         Project.Deadline, 
         Project.idKlant, 
         Projecttypes.idProjecttypes, 
         Projecttypes.Type, 
         Werknemer.idWerknemer, 
         Werknemer.Voornaam, 
         Statusproject.idStatusProject, 
         Statusproject.Soort, 
         Klant.Naam'); 
    $this->db->order_by('Titel', 'asc'); 
    $this->db->from('Project'); 
    $this->db->join('Klant', 'Klant.idKlant = Project.idKlant'); 
    $this->db->join('Projecttypes', 'Projecttypes.idProjecttypes = Project.idProjecttype'); 
    $this->db->join('Werknemer', 'Werknemer.idWerknemer = Project.idWerknemer'); 
    $this->db->join('Statusproject', 'Statusproject.idStatusProject = Project.idStatusProject'); 
       if ($idKlant > 0){ 
    $this->db->where('Klant.idKlant',$idKlant); 
    $this->db->where('Project.Begindatum >',$start); 
    $this->db->where('Project.Deadline <',$eind); 
    } 
    $query = $this->db->get(); 

    if($query->num_rows()>0){ 
     return $query->result(); 
    } 
    else{ 
     return false; 
    } 
} 

project.BegindatumProject.Deadlinevarchar(10)。所以它看起来前两个数字不是完整的日期。例如:将varchar转换迄今在where子句

$start = '01-04-2014'; 
'Project.Begindatum' = (Varchar)'02-03-2014'. 

然后,它会显示,因为 它不仅外观到'01'(-04-2014) and the '02'(-03-2014)

回答

1

使用MySQL的STR_TO_DATE()功能,也where()传递第三个参数作为FALSE

$this->db->where("STR_TO_DATE(Project.Begindatum,'%d-%m-%Y') >",$start,FALSE); 
$this->db->where("STR_TO_DATE(Project.Deadline,'%d-%m-%Y') <",$eind,FALSE); 

其更好地更改您的列的类型以标准格式存储使用date类型t Ø店日期在数据库中,使用STR_TO_DATE与当时的格式%d-%m-%Y存储在表中的值应该有%d-%m-%Y格式,否则将无法正常工作,它应该是比较$start = '2014-04-01';,否则你需要另一个功能,即DATE_FORMAT01-04-2014

进行格式化
$this->db->where("DATE_FORMAT(STR_TO_DATE(Project.Begindatum,'%d-%m-%Y'),'%d-%m-%Y') >", 
$start,FALSE); 
$this->db->where("DATE_FORMAT(STR_TO_DATE(Project.Deadline,'%d-%m-%Y'),'%d-%m-%Y') <" 
,$eind,FALSE); 
+0

这和我以前一样,它仍然没有看到只有前两个数字的完整日期。 (当天) – Rene

+0

@Rene阅读我更新的回答 –

+0

它仍然只看到一天,而不是全日期。 – Rene