3

以下の形式のデータがあります。

id     - autoincrement
myDate - timestamp

抽出したいのは、先週の ID を取得することです。

注記先週とは、土曜から木曜までという意味で、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 に答える