3

我有以下格式的数据。

id     - autoincrement
myDate - timestamp

我要提取的是上周的 ids 。

注意上周,我的意思是从周六到周四,而不是持续 7 天。考虑到当前日期(2013 年 2 月 12 日),对我来说,上周将是2-Feb-2013 to 8-Feb-2013.

我知道你会说,一周从星期日开始,但是由于我在阿拉伯国家工作,所以星期五是休息日,工作从星期六开始。

我知道过去 7 天它会在代码下方

BETWEEN NOW() and DATE_SUB(NOW(), INTERVAL 7 DAY)

sqlfiddle 中的数据

4

1 回答 1

3

您可以尝试以下方法来计算所需的结果:

SELECT *,WEEKOFYEAR(dt),DAYOFWEEK(dt),DAYNAME(dt), DAYOFWEEK(NOW()),WEEKOFYEAR(NOW()) 
FROM tab1 
WHERE 1
AND 
(
  (DAYOFWEEK(NOW()) = 1 OR DAYOFWEEK(NOW()) = 6 OR DAYOFWEEK(NOW()) = 7) 
  AND 
  WEEKOFYEAR(dt) = WEEKOFYEAR(NOW()) AND DAYOFWEEK(dt) < 6
)
OR 
(    
  (DAYOFWEEK(NOW()) = 2 OR DAYOFWEEK(NOW()) = 3 OR DAYOFWEEK(NOW()) = 4  
  OR DAYOFWEEK(NOW()) = 5)
  AND
  (
     (
      (WEEKOFYEAR(dt) = WEEKOFYEAR(NOW())-2 AND DAYOFWEEK(dt) >= 6)
      OR 
      (WEEKOFYEAR(dt) = WEEKOFYEAR(NOW())-1 AND DAYOFWEEK(dt) > 1 AND DAYOFWEEK(dt) < 6)
     )
  )
);

我知道这不是最聪明的方法,但基于此,您可能会得到更好解决方案的提示。

在 sqlfiddle 演示

于 2013-02-12T09:51:36.933 回答