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

时间:2013-08-31 14:04:52

标签: mysql sql select where

这是我的表:

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' 

我该怎么办?

2 个答案:

答案 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子句

Documentation here

另外,你真的应该把日,月和年放在一个列中 - 这就是为什么MySQL有与日期相关的字段类型。使用DATE字段类型将单个列替换为日,月和年,然后您可以更轻松地比较日期。