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

标签 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;

获得不同年份的结果效果很好。但是,当我更改为该查询时,如果我想在同一年内查询,则会得到错误的结果。例如,从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/

相关文章:

python - 随着 NoSQL 的兴起,现在没有任何模型的 webapp 是否更常见?

php - 如何在 Laravel 中按多对多关系进行分组

mysql - 如何在ruby中获取表名数组

php - 使用PDO更新mysql数据库海量数据

mysql 选择时间范围和条件

Mysql自动插入减法后的值

MySQL 数据库。 Web 应用程序有多少?

mysql 选择不同日期的行两次

php - Doctrine 批量插入 - 实体管理器清除

php - PDO UNION 与 ?不工作