两个值之间的日期 - Laravel SQL
Posted
技术标签:
【中文标题】两个值之间的日期 - Laravel SQL【英文标题】:Date between two values - Lavarel SQL 【发布时间】:2021-11-28 22:10:29 【问题描述】:我有一个这样的结构表:Start_date
End_date
现在有了今天的日期,我应该去获取所有数据,包括来自Start_Date
和End_Date
的数据,我该怎么办?
我试过了
SELECT *
FROM text
WHERE Start_date BETWEEN '2021-10-10' AND '2021-10-08'
OR End_date BETWEEN '2021-10-08' AND '2021-10-10
但无济于事......
【问题讨论】:
请添加示例数据以明确您在此处尝试执行的操作。 我需要选择所有由两个日期组成的字段 start_date 和 end_date 日期以这种格式添加 2021-10-10 (yyyy/mm/dd) @JDPinko 请编辑您的问题并添加表格描述、插入格式的一些数据以及基于您将提供的数据的预期结果 你需要 laravel eloquent 还是 mysql 查询? “但无济于事”并没有告诉我们太多。你有错误吗?如果是什么错误。你会得到意想不到的结果吗?如果是这样,结果是什么?您的预期是什么? 【参考方案1】:-
如果您只想获取从开始到结束日期的数据,您可以使用这个雄辩的代码
$start_date = "2020-10-20";
$end_date = "2021-10-20";
Text::where(function ($wh) use ($start_date, $end_date)
$wh->whereBetween('Start_date', [$start_date, $end_date])->orwhereBetween('End_date', [$start_date, $end_date]);
)->get();
这是来自上述雄辩代码的原始查询
select * from `users` where (`Start_date` between '2020-10-20' and '2021-10-20' or `End_date` between '2020-10-20' and '2021-10-20')
-
如果您想查找从开始到结束日期的数据,包括今天的日期,您可以使用这个雄辩的代码
$start_date = "2020-10-20";
$end_date = "2021-10-20";
Text::where(function ($wh) use ($start_date, $end_date)
$today_date = date('Y-m-d');
$wh->where(function ($or_where) use ($start_date, $end_date)
$or_where->whereBetween('Start_date', [$start_date, $end_date])
->orwhereBetween('End_date', [$start_date, $end_date]);
)->orwhereRAW("('$today_date' between `Start_date` and `End_date`)");
)->get();
这是来自上述雄辩代码的原始查询
select * from `text` where ((`Start_date` between '2020-10-20' and '2021-10-20' or `End_date` between '2020-10-20' and '2021-10-20') or ('2021-10-09' between `Start_date` and `End_date`))
【讨论】:
【参考方案2】:Laravel 中的 whereBetween
方法将确定项目值是否在给定范围内。
$start = '2021-10-08';
$end = '2021-10-10';
Text::whereBetween('start_date', [$start, $end])
->whereBetween('end_date', [$start, $end])
->get();
【讨论】:
以上是关于两个值之间的日期 - Laravel SQL的主要内容,如果未能解决你的问题,请参考以下文章