mysql查询选择当月所有行?

mysql查询选择当月所有行?,mysql,Mysql,我有一个名为startdate的列,它是datetime类型。我必须获取当前月份的开始日期和结束日期之间的所有行,即从2014年11月1日到2014年11月30日 要获取日期之间的数据: select * from your_table where year(curdate()) = year(startdate) and month(curdate()) = month(startdate) SELECT * FROM table1 WHERE dateColumn BETWEEN STR_

我有一个名为startdate的列,它是datetime类型。我必须获取当前月份的开始日期和结束日期之间的所有行,即从2014年11月1日到2014年11月30日

要获取日期之间的数据:

select * from your_table
where year(curdate()) = year(startdate)
and month(curdate()) = month(startdate)
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');

最有效的方法是在当前日期执行所有日期算术。这里有一种方法:

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 
选择t*
来自表t
其中t.date>=日期(现在())-间隔日(日期(现在())+1天和
t、 日期<(日期(现在())-间隔日(日期(现在())+1天)+间隔1个月

复杂的日期算法计算本月的第一天和下个月的第一天。此公式允许MySQL利用日期列上的索引。

要查找当月的所有记录,请使用以下简单的单行代码:

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

要选择日、周或月记录,请使用此功能:

 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();
}

该查询将显示其他年份的记录,因此不是当前月份的记录。是添加
和年份(startdate)=年份(CURDATE())