我有一张这样的桌子:
| name | salary | day | month |
| james | 200.00 | 2 | january |
| marie | 400.00 | 4 | january |
| jimmy | 300.00 | 7 | january |
| Fredd | 700.00 | 3 | february |
| rosieli | 500.00 | 5 | february |
| rosela | 800.00 | 6 | february |
如果表名是'db_table',我如何编写一个sql select查询来选择1月4日到2月5日的记录。
类似于:
select * from db_table between day='4',month='january' and day='5' and month='february'";
请告诉我如何编写正确的sql语句以获得所需的结果。这样,该表如下所示:
| name | salary | day | month |
| marie | 400.00 | 4 | january |
| jimmy | 300.00 | 7 | january |
| Fredd | 700.00 | 3 | february |
| rosieli | 500.00 | 5 | february |
谢谢您
最佳答案
你真的应该用日期来做。
select t.*
from t
where str_to_date(concat_ws(2020, month, day), '%Y %M %d') between '2020-01-04' and '2020-02-05';
如有可能,应使用日期进行日期比较。
因为是闰年,所以我使用了
2020
,所以它将处理2月29日。一旦解决了这个问题,您就应该修改数据模型,使其包含实际的日期,而不是月/日的组合。