2014-04-15 103 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