我有4个字段的表格即(开始月份,开始年份,结束月份,结束年份) 和MySQL表结构就像id,customer id,amount,month,year
现在,我需要在开始月份和年份以及结束月份和年份之间显示匹配条件的行。
我试过了这个查询
select id,customer id,concat(month,'-',year) as d1 from payroll where
empid='$_POST[emp_id]' and (STR_TO_DATE(d1,'%m-%Y') between
STR_TO_DATE('$_POST[fmonth]-$_POST[fyear]','%m-%Y') and
STR_TO_DATE('$_POST[tmonth]-$_POST[tyear]','%m-%Y'))
请指教....
答案 0 :(得分:2)
假设列year
和month
以及4个表单字段是整数,这将起作用:
SELECT id
, customer id
, CONCAT(month, '-', year) AS d1
FROM payroll
WHERE empid = '$_POST[emp_id]'
AND (year, month) >= ( '$_POST[fyear]', '$_POST[fmonth]' )
AND (year, month) <= ( '$_POST[tmonth]', '$_POST[tyear]' )
出于安全原因(SQL注入),您应该在将它们发送到数据库之前处理这些$_POST[]
。
(empid, year, month)
上的复合索引有助于提升绩效。