当前位置:网站首页>#MySql MySql 计算今年有多少天周末(周六、日)
#MySql MySql 计算今年有多少天周末(周六、日)
2022-07-17 05:19:00 【happy_sam】
思路
假设今天是2022-07-07 星期四
1. 今天是属于今年的第几周
select WEEKOFYEAR(CURDATE())
输出:25
2. 今天是星期几,如果是星期1~5,就要25*2-2=48天,也就是本周不算进去(-2),如果是星期六,则是少1天(-1),如果是周日就是本周算进去,语句:
SELECT
CASE
WHEN (WEEKDAY(CURDATE()))+1 - 5 <= 0 THEN
- 2
WHEN (WEEKDAY(CURDATE())) +1 = 6 THEN
- 1
ELSE
0
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
注:元旦开始的第一个星期一开始的一周为政治经济上的第一周
##今年的第一天
SELECT
DATE_SUB(
CURDATE(),
INTERVAL dayofyear(CURDATE()) - 1 DAY
)
输出:2022-01-01
##今年的第一天是第几周
SELECT
WEEKOFYEAR(DATE_SUB(
CURDATE(),
INTERVAL dayofyear(CURDATE()) - 1 DAY
))
输出:52
## 这是今年第一天的要考虑的
SELECT
CASE
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) THEN
1
ELSE
0
END
输出:2
最后结果
SELECT
WEEKOFYEAR(CURDATE()) * 2 + (
SELECT
CASE
WHEN (WEEKDAY(CURDATE())) + 1 - 5 <= 0 THEN
- 2
WHEN (WEEKDAY(CURDATE())) + 1 = 6 THEN
- 1
ELSE
0
END
) + (
SELECT
CASE
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) THEN
1
ELSE
0
END
)
输出:54
总结
这个只是按思路去做出来的,太长了,肯定要优化的,那就未完待续
边栏推荐
- Basic mathematics course 2_ Euler function, linear sieve, extended Euler
- C language specifies how many days to display from the date
- 2022/07/14 learning notes (day07) array
- Decorate Apple Tree
- Computational geometry (2)
- WebService接口的创建与实现
- What kind of deep learning is most suitable for your enterprise?
- Acwing game 57 (AK)
- EOG-based eye movement detection and gaze estimation for an asynchronous virtual keyboard基于EOG的异步虚
- c语言调用文件浏览器,实现选择文件的效果
猜你喜欢

EOG-based eye movement detection and gaze estimation for an asynchronous virtual keyboard基于EOG的异步虚

数学基础课2_欧拉函数,线性筛,扩欧

通过VOR深度估计解决三维注视交互中的目标模糊问题

Salgaze: personalized gaze estimation using visual saliency

浅谈跨域的几种解决方案

通過VOR深度估計解决三維注視交互中的目標模糊問題

Eye tracking in virtual reality

【力扣】括号匹配

【力扣】用栈实现队列

使用候选选择从人类注视中学习视频显著性
随机推荐
Leetcode string
WebService接口的创建与实现
通過VOR深度估計解决三維注視交互中的目標模糊問題
2022/07/10 group 5 Ding Shuai's study notes day03
MEX and Increments
【力扣】环形链表 II
2022/07/14 学习笔记 (day07)数组
make menuconfig缺少ncurses
从零开始的 Rust 语言 blas 库之预备篇(1)—— blas 基础介绍
【力扣】复制带随机指针的链表
Markdown语法和常用快捷键
浅谈跨域的几种解决方案
Acwing daily question three thousand five hundred and eleven
感知智能手機上用戶的關注狀態
[force buckle] realize queue with stack
數學基礎課2_歐拉函數,線性篩,擴歐
ACWing每日一题.3511
Volatile function of embedded C language
2022/07/11 group 5 Ding Shuai's study notes day04
计算几何(2)