[英]MySQL select daterange data from two columns
这些是我的桌子:
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'
我该怎么做?
我发现处理“年-月”的最简单方法是乘法-本质上是自某个日期以来的月数:
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;
对月份和年份使用BETWEEN
子句
( 此处的文档 )
另外,您确实应该将日期,月份和年份放在一栏中-这就是MySQL具有与日期相关的字段类型的原因。 用DATE字段类型的单个列替换日,月和年,然后可以更轻松地比较日期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.