我正在创建一个基本的Zodiac Signs应用程序,但在这个问题上遇到了麻烦。 基本上,我只想检查今天是否属于mysql表中的特定日期范围。
注意(IGNORE THE YEAR2019。为方便查询,我刚刚添加了它) 这是我的桌子: 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 |
+-----+--------------+-------------------+-------------+-------------+-------------+----------------------+----------------------+----------------------+------------+
答案 0 :(得分:0)
也许您的意思是您的from_date是2018-12-22,而不是2019-12-22? (或者可能是to_date应该是2020年。您知道了。N年12月和N + 1年1月)。
答案 1 :(得分:0)
您可以尝试其他逻辑来查找用户的十二生肖。该方法可能是这样的,假设用户的生日是12月25日。因此,使用数据库检查月份(十二月),可以是Sagittarius
或Capricorn
。然后检查Day(25),因为day> 22,则十二生肖将为Capricorn
。
如果我分成几步,
您可以尝试使用其他表结构来适应这种方法。
答案 2 :(得分:0)
快速而懒惰的解决方案是两次添加摩ri座。一次是今年年初的一部分(从2018年开始),一次是年底的一部分(到2020年结束)。如果不希望黄道十二宫出现两次,则需要更新查询以使其特殊情况下的跨年线十二生肖。