如何在 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 中获取前一周的数据?的主要内容,如果未能解决你的问题,请参考以下文章

Pentaho - 文件名中的前一周

子查询在获取过去 X 周的数据时出现太多列错误?

如何在laravel的全日历包中更改一周的开始日期? [关闭]

SQL - 灵活地确定前一周的最后一天

如何获取每种类型过去 x 周的数据?

如何以当天为搜索点获取同月前几周的数据