这是我原来的查询:
SELECT *
FROM c60_hrd.hrclhf
WHERE hrch_clm_mth >= '1' AND hrch_clm_mth <= '2'
and hrch_clm_year >= '2017' AND hrch_clm_year <= '2017'
ORDER BY hrch_clm_no;
效果很好。但是,如果我想获得不同年份的结果,例如从 2016 年到 2017 年,它就不起作用。所以我对该查询进行了调整:
SELECT *
FROM c60_hrd.hrclhf
WHERE (hrch_clm_mth >= '12' AND hrch_clm_year >= '2016')
OR (hrch_clm_mth <= '2' and hrch_clm_year <= '2017')
ORDER BY hrch_clm_no;
获得不同年份的结果效果很好。但是,当我更改为该查询时,如果我想在同一年内查询,则会得到错误的结果。例如,从2017年的2月到3月。它显示了我不想要的从1月到3月的记录。据说它仅显示第 2 个月和第 3 个月的记录。
请帮助我。
最佳答案
尝试使用此 WHERE 子句:
WHERE STR_TO_DATE(CONCAT_WS('-', hrch_clm_year, hrch_clm_mth,'1'),'%Y-%m-%d') BETWEEN '2017-02-01' AND '2017-03-01'
如果你想单独使用年份和月份组件,那么你可以执行以下操作:
SELECT *
FROM c60_hrd.hrclhf
WHERE (hrch_clm_mth + 12*hrch_clm_year) BETWEEN (@StartMonth + 12*@StartYear) AND (@FinishMonth + 12*@FinishYear)
ORDER BY hrch_clm_no;
关于mysql - 如何创建 MySQL 查询以获得不同年份的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43690854/