首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何排除MYSQL中的周末和比较当前日期

如何排除MYSQL中的周末和比较当前日期
EN

Stack Overflow用户
提问于 2022-07-18 07:37:16
回答 2查看 36关注 0票数 0

我正在比较数据与表中的当前日期-1和-2日期。样本数据:

代码语言:javascript
复制
Name  cnt  Dates
Mills 20    2022-07-15
Mills 15    2022-07-14
Mills 10    2022-07-13

我编写了查询,其中比较了当前日期-1和当前日期-2。

代码语言:javascript
复制
SELECT Name,Date,`T-2`,`T-1`,Diff
    FROM (
SELECT  T.Name  ,T.Date,T.`T-1`,TT.`T-2`,TT.`T-2` - T.`T-1`  AS Diff FROM 
(select  Name, Date, cnt AS 'T-1' from Acct where date = curdate() - 1 )T
INNER JOIN 
(select  Name, Date, cnt AS 'T-2' from Acct where date = curdate() - 2)TT
ON T.Name = TT.Name )T

现在,当我执行这个查询当前日期(2022-07-18)时,它取-1作为2022-07-17,-2作为2022-07-16。我想把周末排除在外,把周末和星期五、星期四进行比较。

Out :

代码语言:javascript
复制
Name   T-1   T-2  DIFF 
Mills   20   15    5
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-18 09:57:31

curdate() - 1替换为条件表达式curdate() - case weekday(curdate()) when 0 then 3 when 6 then 2 else 1 end。类似于curdate() - 2

代码语言:javascript
复制
SELECT Name,Date,`T-2`,`T-1`,Diff
    FROM (
SELECT  T.Name  ,T.Date,T.`T-1`,TT.`T-2`,TT.`T-2` - T.`T-1`  AS Diff FROM 
(select  Name, Date, cnt AS 'T-1' 
 from Acct 
 where date = curdate() - case weekday(curdate()) when 0 then 3 when 6 then 2 else 1 end) T
INNER JOIN 
(select  Name, Date, cnt AS 'T-2' 
 from Acct 
 where date = curdate() - case weekday(curdate()) when 0 then 4 when 1 then 4 when 6 then 3 else 2 end) TT
ON T.Name = TT.Name ) T

工作日()

票数 0
EN

Stack Overflow用户

发布于 2022-07-18 10:18:08

代码语言:javascript
复制
SET @zi = curdate();
SET @x =   DAYOFWEEK(@zi);
SELECT @x;

case when  @x = 2 then  date = curdate() - 3 else  date = curdate() - 1 end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73018762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档