当前位置: 首页 > article >正文

MySql 日期周处理方式

MySql 日期周处理方式

最近在做数仓相关工作,最近遇到 几个问题,
1、计算指定日期是一年中的第几周,周一为周的第一天
2、计算周的开始时间,结束时间
3、计算周对应的年 比如 2023-01-01 WEEKOFYEAR(2023-01-01) 是2022年的52周,但是日期却是2023年,在系统查询的时候这里会有问题,需要判断 周的所属年份。

如下是我写的一个sql脚本 来实现 这些问题 mysql 版本 5.7 其他数据库可能要对应的修改一下函数,思路类同

SET @biz_date = '2023-01-01';
SELECT 
@biz_date biz_date,       -- 日期
YEAR(@biz_date) year_,    -- 年
MONTH(@biz_date) month_,  -- 月
DAY(@biz_date) day_,      -- 日
WEEKOFYEAR(@biz_date) week_, -- 周 日期date位于那一年的第几周。周一作为一周的第一天。 这一周算上一年还是下一年,取决于这一周的大多数日期(4天以上)在哪一年。算在前一年,就是前一年的最后一周;算在后一年就是后一年的第一周。
CASE    WHEN WEEKOFYEAR(@biz_date) IN(52,53) AND MONTH(@biz_date) = 1 THEN YEAR(@biz_date)-1 
         WHEN WEEKOFYEAR(@biz_date) = 1 AND MONTH(@biz_date) = 12 THEN YEAR(@biz_date)+1 
         ELSE YEAR(@biz_date)
         END week_year,  -- 计算周对应的年   比如 2023-01-01  WEEKOFYEAR(2023-01-01) 是2022年的52周,但是日期却是2023年,在系统查询的时候这里会有问题,需要判断 周的所属年份
DATE_SUB(@biz_date,INTERVAL WEEKDAY(@biz_date) DAY) week_start, -- 计算周的开始时间
DATE_ADD(@biz_date,INTERVAL 6-WEEKDAY(@biz_date) DAY) week_end  -- 计算周的结束时间
;

以下是执行结果,可能存在问题,欢迎指正
在这里插入图片描述


http://www.kler.cn/a/403622.html

相关文章:

  • CSS3 动画:前端开发的动态美
  • 提升软件测试报告的质量:Allure2中添加用例失败截图、日志、HTML块和视频的方法
  • 全面击破工程级复杂缓存难题
  • 使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
  • django从入门到精通(六)——auth认证及自定义用户
  • 设计模式之创建模式篇
  • Vue3,将普通的组合式API转换为<script setup>形式
  • 树莓派开发扩展十二 -C#编写客户端控制小车 Xamarin.Forms
  • -bash: ./kafka-topics.sh: No such file or directory--解决方案
  • unittest和pytest
  • 摄像机ISP和DSP的区别?
  • PostgreSQL 单机与集群部署详细教程
  • 基于YOLOv8深度学习的医学影像肝脏肿瘤病症检测与诊断系统(PyQt5界面+数据集+训练代码)
  • HarmonyOS4+NEXT星河版入门与项目实战------Button组件
  • centos7 如何卸载和安装达梦数据库实例
  • Java项目实战II基于Spring Boot的社区医疗综合服务平台的设计与实现(开发文档+数据库+源码)
  • PostgreSQL TRUNCATE TABLE
  • 自然语言处理(NLP):让机器理解人类语言
  • 【模块一】kubernetes容器编排进阶实战资源对象之Configmap与Secret简介
  • 3、PyTorch张量的运算API(下)
  • .NET SDK 各操作系统开发环境搭建
  • 爬虫优化策略优化请求逻辑
  • i春秋-GetFlag(md5加密,字符串比较绕过)
  • 基于单片机的婴儿监测系统设计
  • 淘宝 NPM 镜像源
  • 【AI系统】AI 发展驱动力