繁体   English   中英

MySQL查询本周的yearweek从星期四开始,在星期三结束

[英]MySQL query yearweek of the current week to start on a Thursday, end on Wednesday

我设置了一条SQL语句来获取当前日历周的数据。 默认情况下,这会抓取从星期日开始到星期六结束的数据。 我希望对此进行更改,以便日历周的开始是星期四,而它在星期三结束。 以下是我的声明:

SELECT * 
FROM transactions 
WHERE yearweek(transactionDate) = yearweek(now()) 
ORDER BY transactionDate DESC

有没有一种方法可以修改年周以允许这样做?

谢谢!

您可以利用WEEKDAY()返回一个代表星期几的数字(0 =星期一,6 =星期日)和一些简单的数学来重写此查询。

从所选日期中减去您希望本周开始的工作日(在您的情况下为4 =星期四),加7并从7中减去余数。这将为您提供减去天数以开始范围的开始。

类似的逻辑适用于计算范围的结束日期。

SELECT * 
FROM transactions 
WHERE DATE(transactionDate)
    BETWEEN DATE_SUB(DATE(NOW()), INTERVAL (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
        AND DATE_ADD(DATE(NOW()), INTERVAL 6 - (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
ORDER BY transactionDate DESC;

对于其他开始日期,请在查询中将工作日替换为4

您可以指定开始日期-默认为0(星期日)。

只需将其设置为4(星期四):

YEARWEEK(transactionDate, 4)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM