#MySql MySql 计算今年有多少天周末(周六、日)

  • 思路
  • 最后结果
  • 总结

思路

假设今天是2022-07-07 星期四

1. 今天是属于今年的第几周

select   WEEKOFYEAR(CURDATE())

输出:
25

2. 今天是星期几,如果是星期1~5,就要25*2-2=48天,也就是本周不算进去(-2),如果是星期六,则是少1天(-1),如果是周日就是本周算进去,语句:

SELECTCASE
WHEN (WEEKDAY(CURDATE()))+1 - 5 <= 0 THEN- 2
WHEN (WEEKDAY(CURDATE())) +1 = 6 THEN- 1
ELSE0
END

输出
-2

注意:
DAYOFWEEK(date)函数 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)
WEEKDAY(date)函数 返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)

3.今年的第一天是今年的第一周吗?
2022-01-01是星期6,是去年的最后一周,2022-01-03~2022-01-10才是今年的第一周,当且仅当1月1号刚好是周一的时候1月1号才是今年的第一周,那么如果1月1号是星期2 ~ 6天数就要+2,如果是星期7 则+1
注:元旦开始的第一个星期一开始的一周为政治经济上的第一周

##今年的第一天
SELECTDATE_SUB(CURDATE(),INTERVAL dayofyear(CURDATE()) - 1 DAY)

输出:
2022-01-01

##今年的第一天是第几周
SELECT
WEEKOFYEAR(DATE_SUB(CURDATE(),INTERVAL dayofyear(CURDATE()) - 1 DAY))

输出:
52

## 这是今年第一天的要考虑的
SELECTCASE
WHEN (WEEKOFYEAR(DATE_SUB(CURDATE(),INTERVAL dayofyear(CURDATE()) - 1 DAY)) != 1)
AND (WEEKDAY(CURDATE()) + 1 <= 6) THEN+ 2
WHEN (WEEKOFYEAR(DATE_SUB(CURDATE(),INTERVAL dayofyear(CURDATE()) - 1 DAY)) != 1)
AND (WEEKDAY(CURDATE()) + 1 = 7) THEN1
ELSE0
END

输出:
2

最后结果

SELECTWEEKOFYEAR(CURDATE()) * 2 + (SELECTCASEWHEN (WEEKDAY(CURDATE())) + 1 - 5 <= 0 THEN- 2WHEN (WEEKDAY(CURDATE())) + 1 = 6 THEN- 1ELSE0END) + (SELECTCASEWHEN (WEEKOFYEAR(DATE_SUB(CURDATE(),INTERVAL dayofyear(CURDATE()) - 1 DAY)) != 1)AND (WEEKDAY(CURDATE()) + 1 <= 6) THEN+ 2WHEN (WEEKOFYEAR(DATE_SUB(CURDATE(),INTERVAL dayofyear(CURDATE()) - 1 DAY)) != 1)AND (WEEKDAY(CURDATE()) + 1 = 7) THEN1ELSE0END)

输出:
54

总结

这个只是按思路去做出来的,太长了,肯定要优化的,那就未完待续

#MySql MySql 计算今年有多少天周末(周六、日)相关推荐

  1. mysql怎么计算某个字段重复的个数_2020最新版MySQL数据库面试题(一)

    点击上方" 码农编程进阶笔记 ",选择"置顶或者星标" 文末有干货,每天定时与您相约! 为什么要使用数据库 数据保存在内存 优点:存取速度快 缺点:数据不能永久 ...

  2. mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句

    mysql取字段逗号分隔的第一个 cover字段为:(admin/LUpiEMD1Pk6U6B,admin/LUpiEMD1Pk6U6B,admin/LUpiEMD1Pk6U6B) 取逗号分隔第一个词 ...

  3. Mysql语句计算文本字数_使用SQL确定文本字段的字数统计

    MySQL的文本处理功能不足以满足您的需求.存储功能是一个选项,但可能会很慢.在MySQL中处理数据的最佳选择是添加一个用户定义的函数.无论如何,如果要构建MySQL的较新版本,也可以添加一个nati ...

  4. mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法

    mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法:  语法:  TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)  说明:  ...

  5. 关于mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止问题

    背景:由于某些原因,服务器需要重启一下,结果重启完就出现这个mysql本地计算机上的MySQL服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止问题,一想到平时偷懒没有做数据库自动备份,当时 ...

  6. 【解决】mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止

    最近写一个Java Web的项目,需要用到 mysql 数据库,在计算机管理中启动时,发现 mysql 报错:mysql本地计算机上的MySQL服务启动后停止.某些服务在未由其他服务或程序使用时将自动 ...

  7. MySql按周,按月,按日分组统计数据、日期计算。并统计环比、同比

    MySql按周,按月,按日分组统计数据 <!-- 按日查询 --> SELECT DATE_FORMAT(created_date,'%Y-%m-%d') as time,sum(mone ...

  8. 计算请假工时,去除周六周末的时间

    做项目时,写到一个请假的模块,需要计算请假工时,去除周六周末,时间为一天8H,8:00-17:00,中午12:00-13:00 为午休时间 function getLeaveTime(startDat ...

  9. mysql数据库计算全部女生_mysql数据库基础操作大全(小白必看)

    一.概念: 数据: data 数据库: DB 数据库管理系统:DBMS 数据库系统:DBS MySQL:数据库 mysql:客户端命令(用来连接服务或发送sql指令) SQL:结构化查询语言 ,其中M ...

最新文章

  1. TVM/Relay 的 PartitionGraph()(mod) 函数讨论整理
  2. Leetcode 200. 岛屿数量 解题思路及C++实现
  3. 【树链剖分】洛谷树(P3401)
  4. aspx repeater 用法_ASP.NET-----Repeater数据控件的用法总结
  5. eclipse设置内存参数 堆内存溢出
  6. Spark的测量系统MetricsSystem
  7. [Ubuntu] 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
  8. 数据库表TreeView树的快速生成
  9. 菜鸟到高手:SQL开发进阶常用精妙语句
  10. 黑马程序员2022年最新软件测试学习路线
  11. Java之UUID生成
  12. 多元函数微分法及其应用
  13. Git Gui界面出现中文乱码的设置方法
  14. 【MV】恋爱サーキュレーション 马琴舞蹈完整版
  15. 分分钟上手 VS Code
  16. 【零基础系列】K-Means聚类算法
  17. 织梦dedecms 忘记管理员后台密码的解决技巧
  18. python色卡_Python可视化|08-Palettable库中颜色条Colormap(四)
  19. 开启Intel VT-x
  20. 计算机室走廊文化内容,寝室走廊文化设计方案

热门文章

  1. 51单片机入门(江科大)之个人笔记
  2. 计算机基础16秋在线作业,答案计算机基础16秋在线作业四
  3. Promise应用场景总结
  4. TI电量计--配置及训练流程
  5. phpcms 开启在线编辑模板
  6. 计算机的发展英语作文80,初中英语作文80词带翻译:计算机发展
  7. 新能源电动汽车一键启动手机操控智能钥匙
  8. Minecraft-解决点券无法在计分板显示的问题(TitleManager插件)
  9. 网站被挂马,有免费检测的网站吗?
  10. 井盖智能化升级最佳实践 1