mysql - 如果我检查日期 2019-01-12 是否在 12 月到 1 月的日期范围内,查询会给出空结果
问题描述
我正在创建一个基本的十二生肖应用程序,但我遇到了这个问题。基本上,我只想检查今天是否在 mysql 表中的特定日期范围之间。
注意(忽略 2019 年。为了方便查询,我只是添加了它)这是我的表: Zodia Signs Table
$date = "2019-03-09"
$zodiacSign = DB::table('zodiac_signs')
->where(function ($query) use($date){
$query->where('from_date', '<=', $date)
->where('to_date', '>=', $date);
})->get();
除了 2019-12-22 和 2019-01-19 之间的日期之外的每个日期都按预期工作。我在这里做错了什么?
+-----+--------------+-------------------+-------------+-------------+-------------+----------------------+----------------------+----------------------+------------+
| id | name | symbol | icon | from_date | to_date | description | created_at | updated_at | deleted_at |
+-----+--------------+-------------------+-------------+-------------+-------------+----------------------+----------------------+----------------------+------------+
| 2 | Aries | The Ram | NULL | 2019-03-21 | 2019-04-19 | | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 3 | Taurus | The Bull | NULL | 2019-04-20 | 2019-05-20 | | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 4 | Gemini | The Twins | NULL | 2019-05-21 | 2019-06-20 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 5 | Cancer | The Crab | NULL | 2019-06-21 | 2019-07-22 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 6 | Leo | The Lion | NULL | 2019-07-23 | 2019-08-22 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 7 | Virgo | The Virgin | NULL | 2019-08-23 | 2019-09-22 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 8 | Libra | The Scales | NULL | 2019-09-23 | 2019-10-22 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 9 | Scorpio | The Scorpion | NULL | 2019-10-23 | 2019-11-21 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 10 | Sagittarius | The Archer | NULL | 2019-11-22 | 2019-12-21 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 11 | Capricorn | The Goat | NULL | 2019-12-22 | 2019-01-19 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 12 | Aquarius | The Water Bearer | NULL | 2019-01-20 | 2019-02-18 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
| 13 | Pisces | The Fishes | NULL | 2019-02-19 | 2019-03-20 | NULL | 2019-07-17 03:09:07 | 2019-07-17 03:09:07 | NULL |
+-----+--------------+-------------------+-------------+-------------+-------------+----------------------+----------------------+----------------------+------------+
解决方案
您可以尝试不同的逻辑来查找用户的星座。该方法可能是这样的,假设用户的出生日期是 12 月 25 日。因此使用您的数据库检查月份(12 月),它可能是Sagittarius
或Capricorn
。然后检查天 (25),因为天 > 22,那么十二生肖将是Capricorn
。
如果我分解成步骤,
- 仅设置月份和日期的范围,不要添加年份。检查
- 首先是用户的月份,然后找出哪两个可能是他/她的签名检查
- 检查日期以完成决定
您可以尝试使用不同的表结构来适应这种方法。