我的 Sql 查询以获取所选月份和年份的所有先前记录
My Sql Query to get All previous records from Selected Month And year
我想从我的 mysql table 中获取所选月份和年份的所有先前记录。
例如,如果我选择的月份和年份是 08-2018,那么查询应该显示 2018 年 8 月以来的所有先前记录。
我试过这个 mysql 查询:
"select * form tblusers where year(created_date)<=2018 and month(created_date)<'08'";
但它不包括我的月份大于 8 时的记录,例如 09-2017 等
试试这个:
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" 中有错误(但我想只要你得到结果就不是错误。
根据您在此处设置的内容,您的查询工作正常。它不应该 return 结果高于 08 个月,这实际上是你的情况:
month(created_date)<'08'
这意味着如果您的值为 09,10,11 ... 它不符合您的条件,因为它高于 08。
我更喜欢创建复合值
select * from tblusers where
(year(created_date) * 12 + month(created_date))
<= 2018 * 12 + 8;
你可以尝试更简单的方法:
获取记录 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'"
希望对您有所帮助:
像这样使用 CI 查询生成器 class :
$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
我想从我的 mysql table 中获取所选月份和年份的所有先前记录。 例如,如果我选择的月份和年份是 08-2018,那么查询应该显示 2018 年 8 月以来的所有先前记录。
我试过这个 mysql 查询:
"select * form tblusers where year(created_date)<=2018 and month(created_date)<'08'";
但它不包括我的月份大于 8 时的记录,例如 09-2017 等
试试这个:
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" 中有错误(但我想只要你得到结果就不是错误。
根据您在此处设置的内容,您的查询工作正常。它不应该 return 结果高于 08 个月,这实际上是你的情况:
month(created_date)<'08'
这意味着如果您的值为 09,10,11 ... 它不符合您的条件,因为它高于 08。
我更喜欢创建复合值
select * from tblusers where
(year(created_date) * 12 + month(created_date))
<= 2018 * 12 + 8;
你可以尝试更简单的方法:
获取记录 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'"
希望对您有所帮助:
像这样使用 CI 查询生成器 class :
$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