[mysql] 지난주 데이터를 선택하는 MySQL 쿼리?

안녕하세요, 날짜 필드와 기타 정보가있는 테이블이 있습니다. 지난주 (일요일부터 주 시작)의 모든 항목을 선택하고 싶습니다.

테이블 값 :

id  date
2   2011-05-14 09:17:25
5   2011-05-16 09:17:25
6   2011-05-17 09:17:25
8   2011-05-20 09:17:25
15  2011-05-22 09:17:25

지난주에있는 모든 ID를 선택하고 싶습니다. 예상되는 출력은 5, 6, 8입니다
(ID 2는 지난 주가 아니고 ID 15는 이번 주에 있음).

작성 방법과 SQL 쿼리는 동일합니다.



답변

SELECT id FROM tbl
WHERE date >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND date < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY


답변

select id from tbname
where date between date_sub(now(),INTERVAL 1 WEEK) and now();


답변

SELECT id FROM table1
WHERE YEARWEEK(date) = YEARWEEK(NOW() - INTERVAL 1 WEEK)

저는 특별히 YEARWEEK 함수를 사용하여 이전 전체 주 (오늘 전 7 일이 아닌)로 돌아갑니다. YEARWEEK는 또한주의 시작을 설정하거나 해당 연도의 첫 번째 / 마지막 주를 처리하는 방법을 결정하는 두 번째 인수를 허용합니다. YEARWEEK를 사용하면 단일 변수에서 뒤로 / 앞으로 이동할 주 수를 유지할 수 있으며 이전 / 미래 연도의 동일한 주 번호를 포함하지 않으며 여기에있는 다른 대부분의 답변보다 훨씬 짧습니다.


답변

단순화 된 형식 :

지난주 데이터 :

SELECT id FROM tbl


WHERE
WEEK (date) = WEEK( current_date ) - 1 AND YEAR( date) = YEAR( current_date );

2 주 전 데이터 :

SELECT id FROM tbl


WHERE
WEEK (date) = WEEK( current_date ) - 2 AND YEAR( date) = YEAR( current_date );

SQL 바이올린

http://sqlfiddle.com/#!8/6fa6e/2


답변

PHP로 계산 한 다음 쿼리에 추가 할 수 있습니다.

$date = date('Y-m-d H:i:s',time()-(7*86400)); // 7 days ago

$sql = "SELECT * FROM table WHERE date <='$date' ";

이제 이것은 일주일 전의 날짜를 제공합니다


답변

아마도 가장 간단한 방법은 다음과 같습니다.

SELECT id
FROM table
WHERE date >= current_date - 7

8 일 동안 (예 : 월요일-월요일)


답변

제발 사람들이 … OP와 같은 ‘지난주’가 요청했고 내가 찾고 있던 곳 (하지만 만족스러운 답변이 없음)은 지난 주입니다.

오늘이 화요일 인 경우, 지난 주 월요일 주일 전 일요일까지 일주일 전에 .

그래서:

WHERE
    WEEK(yourdate) = WEEK(NOW()) - 1

또는 ISO 주 :

WHERE
    WEEK(yourdate, 3) = WEEK(NOW(), 3) - 1