我有一个名称为startdate的列名为datetime type.And我必须获取当前月份的开始日期和结束日期之间的所有行。这是从1 / nov / 2014到2014年11月30日。
答案 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();
}