我必须搜索具有给定日期和时间(早上和晚上)的数据。如何通过laravel查询从数据中找到可用日期? 如果我搜索日期 2019-06-10 至 2019-06-18 。它应该只返回ID 3和4。在此查询中,它返回ID 1、3和4。没有从日期之间进行检查的此查询有什么问题?我在数据库中有日期类型列作为开始和结束日期。 我想检查两个条件
同一查询中的两个条件。希望你能理解。
self.type_parameters[veh_id]
id event_id date_from date_to
1 1 2019-06-08 2019-06-12
2 1 2019-06-14 2019-06-16
3 2 2019-06-20 2019-06-25
4 3 2019-07-26 2019-07-27
答案 0 :(得分:1)
假设$endDate
总是大于(或等于)$startDate
$startDate = "2019-06-10";
$endDate = "2019-06-18";
- 给出的日期不在这些日期之间
->whereDate('date_to', '<', $startDate)
->whereDate('date_from', '>', $endDate)
如果给定的$startDate
大于db 'date_to'
,则$startDate
不在'date_to'
和'date_from'
之间。将检索'date_to'
小于"2019-06-10"
的记录。
当给定的'date_from'
大于$endDate
时,$endDate
不在'date_to'
和'date_from'
之间。将检索'date_from'
大于"2019-06-18"
的记录。
- 给出的日期不应等于date_from和date_to
这不是必需的,因为在第2点的查询中,我们使用>和<,这将不考虑等式。
//->where('date_from', '<>', $startDate)->where('date_from', '<>', $endDate)
//->where('date_to', '<>', $startDate)->where('date_to', '<>', $endDate)
只是:
$getEvents = Booking::where('category_id', '=', $categoryID)
->whereDate('date_to', '<', $startDate)
->whereDate('date_from', '>', $endDate)
->get();
答案 1 :(得分:0)
$getEvents = Booking::where('category_id', '=', $categoryID)
->where('date_from', '<', $startDate)
->where('date_to', '>', $endDate)
->get();
答案 2 :(得分:0)
尝试一下
DB::table('table_name')
->whereNotBetween('date', [star_date, end_date])
->get();