mysql查询选择当前月份的所有行?

时间:2014-11-03 12:37:44

标签: mysql

我有一个名称为startdate的列名为datetime type.And我必须获取当前月份的开始日期和结束日期之间的所有行。这是从1 / nov / 2014到2014年11月30日。

5 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:5)

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

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

答案 2 :(得分: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利用日期列上的索引。

答案 3 :(得分: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');

答案 4 :(得分: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();
}