MySQL查询当周的周一周开始,周三结束

时间:2014-02-08 19:11:55

标签: php mysql sql

我设置了SQL语句来从当前日历周中获取数据。默认情况下,这会从星期日开始并在星期六结束时抓取数据。我希望改变这一点,以便日历周的开始是星期四,它在星期三结束。以下是我的发言:

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

有没有办法以允许这种方式修改年周?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以利用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替换为工作日。

答案 1 :(得分:-3)

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

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

YEARWEEK(transactionDate, 4)