记一次 week 上对应的时间的坑

最近在做统计上的东西,遇到一个关于周(week)对应的时间的起始日期问题,导致汇总的数据不一致

mysql 默认的周的起始日期是 周日 程序 Carbon 对象默认获取周是从周一 开始,但是可以设置,我们没设置起始日期,就出现了统计问题

show variables like '%week%'

default_week_format = 0 代表: 0 代表从周日开始 1 代表 周一开始

如果想要处理数据库,可以执行下面命令,也可以添加到/etc/my.cnf 文件下
set global default_week_format = 1

记一次 week  上对应的时间的坑

程序处理方式:

Carbon 对象默认的周计算

 public const SUNDAY = 0;
 public const MONDAY = 1;
 public const TUESDAY = 2;
 public const WEDNESDAY = 3;
 public const THURSDAY = 4;
 public const FRIDAY = 5;
 public const SATURDAY = 6;
$date = Carbon::now();
$date->setISODate(2022, 46);
// 注意,此处设置从周日开始,和数据库保持一致,默认是1
$start = $date->copy()->startOfWeek(Carbon::SUNDAY)->toDateString();
// 结束时间设置为 周六 
$end = $date->copy()->endOfWeek(Carbon::SATURDAY)->toDateString();

通过这种方式,我们使用程序来修改,保持和数据库一致
数据库因为是分布式部署,修改成本比较高,程序更快捷

本作品采用《CC 协议》,转载必须注明作者和本文链接
每天一点小知识,到那都是大佬,哈哈
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!