我想从我的 mysql 表中获取选定月份和年份的所有以前的记录。例如,如果我选择的月份和年份是 08-2018,则查询应显示 2018 年 8 月以来的所有先前记录。
我试过这个mysql查询:
"select * form tblusers where year(created_date)<=2018 and month(created_date)<'08'";
但它不包括当我的月份大于 8 时的记录,例如 09-2017 等
我想从我的 mysql 表中获取选定月份和年份的所有以前的记录。例如,如果我选择的月份和年份是 08-2018,则查询应显示 2018 年 8 月以来的所有先前记录。
我试过这个mysql查询:
"select * form tblusers where year(created_date)<=2018 and month(created_date)<'08'";
但它不包括当我的月份大于 8 时的记录,例如 09-2017 等
希望对你有帮助 :
像这样使用 CI 查询生成器类:
$year = '2018';
$month = '08';
$query = $this->db->from('tblusers')
->where('MONTH(created_date) <', $month)
->where('YEAR(created_date) <=', $year)
->get();
if ($query->num_rows() > 0)
{
print_r($query->result());
}
echo $this->db->last_query();
像这样使用更好的方法:
$date = '2017-09-01';
$query = $this->db->from('tblusers')
->where('DATE(created_date) >=', $date)
->get();
更多信息:https ://codeigniter.com/user_guide/database/query_builder.html
您可以尝试更简单的方法:
获取记录 created_date 小于所选月份和年份的第一个日期。
如果您的created_date
字段是类型,Date
那么您可以尝试以下操作:
"select * form tblusers where created_date < '2018-08-01'"
如果您的created_date
字段是类型,Datetime
那么您可以尝试以下操作:
"select * form tblusers where created_date < '2018-08-01 00:00:00'"
我更喜欢创造一个复合价值
select * from tblusers where
(year(created_date) * 12 + month(created_date))
<= 2018 * 12 + 8;
尝试这个:
select * form tblusers where month(created_date)<8 and year(created_date)<=2018
SELECT * FROM tblusers WHERE YEAR(created_date)<='2018' AND MONTH(created_date)<='08';
试试这个也等于月份+你的sql语法在“from”这个词中有一个错误(但我想只要你得到结果就不是错误。
您的查询根据您在此处设置的内容正常工作。它不应该返回高于 08 个月的结果,这实际上是您的情况:
month(created_date)<'08'
这意味着如果您的值是 09,10,11 ...它不会通过您的条件,因为它高于 08。