2014-11-03 72 views

回答

12
select * from your_table 
where year(curdate()) = year(startdate) 
and month(curdate()) = month(startdate) 
0

要日期間獲得的數據:

SELECT * FROM table1 WHERE dateColumn BETWEEN STR_TO_DATE('2014-11-01', '%Y-%m-%d') AND STR_TO_DATE('2014-11-30', '%Y-%m-%d'); 
1

最有效的方法就是做在當前日期的所有日期運算。這裏是一種方法:

select t.* 
from table t 
where t.date >= date(now()) - interval day(date(now()) + 1 day and 
     t.date < (date(now()) - interval day(date(now()) + 1 day) + interval 1 month 

複雜的日期算術計算本月的第一天和下個月的第一天。這個公式允許MySQL利用日期列上的索引。

4

要找出當前月份的所有記錄與這個簡單的一行代碼中完成:

SELECT * FROM `Your_Table` WHERE MONTH(startdate) = MONTH(CURDATE()); 
+0

該查詢顯示其他年份的記錄,因此不是當前月份的記錄。 – iovis 2016-08-10 15:25:44

+0

是添加'AND YEAR(startdate)= YEAR(CURDATE())' – 2016-12-07 11:07:40

0

對於選擇一天或一週或一個月的記錄使用此功能:

function get_records_by_period($period, $your_date) { 
if ($period == 'today') { 
    $timeSQL = ' Date($your_date)= CURDATE()'; 
} 
if ($period == 'week') { 
    $timeSQL = ' YEARWEEK($your_date)= YEARWEEK(CURDATE())'; 
} 
if ($period == 'month') { 
    $timeSQL = ' Year($your_date)=Year(CURDATE()) AND Month(`your_date`)= Month(CURDATE())'; 
} 

$Sql = "SELECT * FROM your_table WHERE ".$timeSQL 
return $Result = $this->db->query($Sql)->result_array(); 
}