繁体   English   中英

MySQL从两列中选择日期范围数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM