如何在 Laravel 5.1 中获取前一周的数据?
Posted
技术标签:
【中文标题】如何在 Laravel 5.1 中获取前一周的数据?【英文标题】:How to get data of previous week in Laravel 5.1? 【发布时间】:2016-02-10 05:43:54 【问题描述】:我想在 Laravel 5.1 中获取上周插入的数据。目前我正在使用以下查询:
$AgoDate=\Carbon\Carbon::now()->subWeek()->format('Y-m-d'); // returns 2016-02-03
$NowDate=\Carbon\Carbon::now()->format('Y-m-d'); // returns 2016-02-10
$query->whereBetween('created_on', array($AgoDate,$NowDate));
这将返回最近 7 天的数据,但我需要上周的数据,这意味着它应该返回 1 月 31 日至 2 月 6 日的数据,即前一周。
注意:在我的情况下,周从星期日开始,到星期六结束。
【问题讨论】:
原始 mysql 查询怎么样? 好的,你可以在原始mysql中发布你的答案,我会在laravel中转换,如果你有的话请告诉我 所以请查看http://***.com/questions/28936174/how-can-i-get-last-week-current-week-and-last-month-record-from-mysql/28936788#28936788
,如果它不是您想要的,请告诉我。
【参考方案1】:
编辑:适应 OP 的问题
对于以前的日期使用
$currentDate = \Carbon\Carbon::now();
$agoDate = $currentDate->subDays($currentDate->dayOfWeek)->subWeek();// gives 2016-01-31
同样你可以得到你的 nowDate
$currentDate = \Carbon\Carbon::now();
$nowDate = $currentDate->subDays($currentDate->dayOfWeek + 1); // gives 2016-02-06
调整周开始(星期日/星期一)我认为您可以在 dayOfWeek 中添加/减去一些天,例如 $currentDate->subDays($currentDate->dayOfWeek + 1 /* or -1 */);
编辑:如 cmets 中所述,您也可以使用 startOfWeek()
方法而不是 subDays()
如果它直接为您工作。
【讨论】:
或$agoDate = $currentDate->startOfWeek()->subWeek();
感谢@RalphJohnGalindo,错过了 :)
@RalphJohnGalindo, &codeHeart 但它是星期一,我需要从星期日开始一周
@Insomania 如答案中所述,您可以添加一些数字以更改周开始,例如,如果您需要将 $nowDate 设为 2016-02-06,然后执行类似 $ nowDate = $currentDate->subDays($currentDate->dayOfWeek + 1);
@codeHeart 非常感谢,它真的很有魅力:)以上是关于如何在 Laravel 5.1 中获取前一周的数据?的主要内容,如果未能解决你的问题,请参考以下文章