2016-12-15 44 views
0

我在我的数据库中有几条记录,该表有一个名为“weekday”的列,我在这里存储了一个像“mon”或“fri”这样的工作日。现在从前端用户搜索发布到服务器的参数是startday和endDay。检索两个工作日之间的数据库记录

现在我想检索startDay和endDay之间的所有记录。我们可以假设startDay是“mon”,endDay是“sun”。我目前不知道如何做到这一点。

+2

用数字代替“周一,周二......”这样你就可以做一个范围调用并获得这些。所以如果你把1作为星期一,2作为星期二等,并且想要在星期一和星期五之间得到,你可以在星期几大于或等于1且小于或等于5时进行呼叫。存储星期一或星期五或星期五或其他什么是非常不直观的,如果你想要使用这些数据汇总数据 – khuderm

+0

我同意,这似乎更简单,谢谢:D – user3718908

+0

虽然将它打开,仍然需要答案,可能需要稍后的解决方案。 – user3718908

回答

0

创建另一个表格,其中包含日期和相​​应编号的名称。然后,您只需要按名称将当前表与天表结合起来,然后使用该表中的数字进行查询。

0

不完全实用,但可以使用MySQL将sun,mon,tue转换为数字。

设置一个静态的一年,周数像201610为今年的第10周,然后用DATE_FORMAT的结合STR_TO_DATE:

DATE_FORMAT(STR_TO_DATE('201610 mon', '%X%V %a'), '%w') 
DATE_FORMAT(STR_TO_DATE('201610 sun', '%X%V %a'), '%w') 
DATE_FORMAT(STR_TO_DATE('201610 tue', '%X%V %a'), '%w') 

这3个报表将分别计算为0,1,2。

这是做的是%a格式(周日至周六)转换为%w格式最主要的(0-6)

-1

好吧,我不知道你的应用程序的架构,因为我认为存储和查询一周的字符串是不合适的,但我可以告诉你一个解决这个问题的方法。 做一个辅助函数,返回你平日的数组范围内,即

function getWeekDaysArray($startWeekDay, $endWeekDay) { 
    returns $daysArray['mon','tue','wed']; 
} 

$daysRangeArray = getWeekDaysArray('mon', 'wed'); 

现在有了这个数组,你可以在表中查询

DB::table('TableName')->whereIn('week_day', $daysRangeArray)->get();

希望这有助于

+0

这甚至没有编译。 –

相关问题