如何创建MySQL查询以获取不同年份的结果?

时间:2017-04-29 01:14:23

标签: mysql

这是我原来的疑问:

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;

它可以很好地获得不同年份的结果。但是,当我更改为该查询时,如果我想在同一年内查询,则会得到错误的结果。例如,从第2个月到第3个月和2017年。它显示从第1个月到第3个月的记录,这是我不想要的。它应该只显示第2个月和第3个月的记录。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

尝试使用此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;