这是我的表:
ut_period
id | month | year | name
1 | 9 | 2013 | dddd
2 | 2 | 2017 | eeee
我想在2013-8和2018-9选择行女巫。所以我写了这个查询,但是没有成功:
SELECT *
FROM `ut_period` p
WHERE `p`.`status` = 4
AND `p`.`year` >= '2013'
AND `p`.`mont` >= '8'
AND `p`.`year` <= '2018'
AND `p`.`month` <= '9'
我该怎么办?
答案 0 :(得分:1)
我发现处理“年 - 月”的最简单方法是乘法 - 基本上是自某个日期以来的月数:
select p.*
from ut_period p
where (p.year * 12 + p.month) between 2013*12 + 8 and 2018*12 + 9;
如果您愿意,也可以将它们转换为YYYYMM形式的数字,这样可以更容易地输入范围的常量值:
select p.*
from ut_period p
where (p.year * 100 + p.month) between 201308 and 201809;
答案 1 :(得分:0)
使用月份和年份的BETWEEN
子句
另外,你真的应该把日,月和年放在一个列中 - 这就是为什么MySQL有与日期相关的字段类型。使用DATE字段类型将单个列替换为日,月和年,然后您可以更轻松地比较日期。