在两个工作日之间检索数据库记录

时间:2016-12-15 19:42:13

标签: laravel eloquent laravel-5.3

我的数据库中有几条记录,该表有一个名为&#34的列;工作日"在那里我存储一个工作日,如" mon"或" fri"。现在,当用户搜索时,从前端发布到服务器的参数是startday和endDay。

现在我想检索startDay和endDay之间的所有记录。我们可以假设startDay是" mon"和endDay是" sun"。我目前不知道该怎么做。

3 个答案:

答案 0 :(得分:0)

创建另一个表格,其中包含日期名称及其对应的数字。然后,您只需要将当前表与日期表按名称连接起来,然后使用该表中的数字进行查询。

答案 1 :(得分:0)

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

设置今年第10周的静态年份和周数,如201610,然后使用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)

答案 2 :(得分:-1)

我不知道你的应用程序的架构,因为我认为存储和查询一周的字符串是不合适的,但我可以告诉你一个解决这个问题的方法。 制作一个帮助函数,它会返回i-e

范围内的工作日数组
function getWeekDaysArray($startWeekDay, $endWeekDay) {
     returns $daysArray['mon','tue','wed'];
}

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

现在使用此数组,您可以在表中查询

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

希望这个帮助