我的数据库中有几条记录,该表有一个名为&#34的列;工作日"在那里我存储一个工作日,如" mon"或" fri"。现在,当用户搜索时,从前端发布到服务器的参数是startday和endDay。
现在我想检索startDay和endDay之间的所有记录。我们可以假设startDay是" mon"和endDay是" sun"。我目前不知道该怎么做。
答案 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();
希望这个帮助