복붙노트

[SQL] MySQL의 쿼리는 지난 주에서 데이터를 선택하려면?

SQL

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이 없습니다 지난 주, 그리고 ID (15)는 현재 주에 있습니다.)

어떻게 작성하고 같은에 대한 SQL 쿼리합니다.

해결법

  1. ==============================

    1.

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

    2.

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

    3.

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

    나는 (오늘 7 일 전 반대) 이전에 전체 달력 주에 돌아가 특히 YEARWEEK 기능을 사용합니다. YEARWEEK 또한 일주일의 시작을 설정하거나 올해의 첫 번째 / 마지막 주 처리하는 방법을 결정하는 두 번째 인수를 할 수 있습니다. YEARWEEK은 하나의 변수에 앞으로 / 뒤로 이동 주의 수를 유지하기 위해 다음을 수행 할 수 있습니다, 이전 / 미래 년에서 같은 주 번호를 포함하지 않습니다, 그리고 여기에 다른 답변의 대부분보다 훨씬 짧다.

  4. ==============================

    4.단순화 된 형태 :

    단순화 된 형태 :

    지난 주 데이터 :

    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

  5. ==============================

    5.당신은 PHP에서 계산을 한 다음 쿼리에 추가 할 수 있습니다 :

    당신은 PHP에서 계산을 한 다음 쿼리에 추가 할 수 있습니다 :

    $date = date('Y-m-d H:i:s',time()-(7*86400)); // 7 days ago
    
    $sql = "SELECT * FROM table WHERE date <='$date' ";
    

    지금은 일주일 전에의 날짜를 줄 것이다

  6. ==============================

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

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

    SELECT id
    FROM table
    WHERE date >= current_date - 7
    

    팔일의 경우 (예 : 월요일 - 월요일)

  7. ==============================

    7.당신은 당신의 미들웨어 일요일 인 오늘 어떤 일 기준으로 CALC해야합니다 (등 PHP, 파이썬,.) *

    당신은 당신의 미들웨어 일요일 인 오늘 어떤 일 기준으로 CALC해야합니다 (등 PHP, 파이썬,.) *

    그때,

    select id
    from table
    where date >= "$sunday-date" + interval 7 DAY
    
  8. ==============================

    8.이 한 줄에있을 수 있습니다 :

    이 한 줄에있을 수 있습니다 :

    SELECT * FROM table WHERE Date BETWEEN (NOW() - INTERVAL 7 DAY) AND NOW()
    
  9. ==============================

    9.간단한 방법이 하나가 될 수 있습니다, 이것은 내 코드에서 실제 예이며 완벽하게 작동합니다 :

    간단한 방법이 하나가 될 수 있습니다, 이것은 내 코드에서 실제 예이며 완벽하게 작동합니다 :

    where("actions.created_at >= DATE_SUB(CURDATE(), INTERVAL 1 WEEK)")
    
  10. ==============================

    10.영업 같은 사람 ... '지난 주'요구 사항과 어디를 찾고 있었다 (그러나 만족 답변을 아무도 없음) 마지막 주입니다.

    영업 같은 사람 ... '지난 주'요구 사항과 어디를 찾고 있었다 (그러나 만족 답변을 아무도 없음) 마지막 주입니다.

    오늘이 화요일 인 경우, 지난 주 AGO 일요일 주일 AGO 월요일 일주일입니다.

    그래서:

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

    또는 ISO의 주 :

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

    11.위의 쿼리는 작동하지 않습니다. 우리는 열 값을 CAST 수없는 경우 where 절을 한 후, 그것은 작동하지 않습니다. 당신은 열 값을 캐스팅해야한다.

    위의 쿼리는 작동하지 않습니다. 우리는 열 값을 CAST 수없는 경우 where 절을 한 후, 그것은 작동하지 않습니다. 당신은 열 값을 캐스팅해야한다.

    예 :. :

    SELECT.....
    WHERE CAST( yourDateColumn AS DATE ) > DATEADD( DAY, -7, CAST( GETDATE() AS DATE )
    
  12. ==============================

    12.

    SELECT id  FROM tb1
    WHERE 
    YEARWEEK (date) = YEARWEEK( current_date -interval 1 week ) 
    
  13. ==============================

    13.나는 종종뿐만 아니라 빠른 "지난 주"체크를하고 다음이 오늘 나를 위해 잘 작동 경향이 포함되어 있습니다.

    나는 종종뿐만 아니라 빠른 "지난 주"체크를하고 다음이 오늘 나를 위해 잘 작동 경향이 포함되어 있습니다.

    DECLARE @StartDate DATETIME 
    DECLARE @EndDate DATETIME 
    
    SET @StartDate = Getdate() - 7 /* Seven Days Earlier */
    SET @EndDate = Getdate() /* Now */
    
    SELECT id 
    FROM   mytable 
    WHERE  date BETWEEN @StartDate AND @Enddate 
    

    당신이 오늘을 포함하지하려면 단지 @EndDate에서 여분의 일을 뺍니다. 나는이 두 변수 오늘의 GET을 선택하는 경우

    나는 일요일 일요일 원한다면 나는 다음있을 것입니다.

    SET @StartDate = Getdate() - 8 /* Eight Days Earlier */
    SET @EndDate = Getdate() - 1  /* Yesterday */
    
  14. ==============================

    14.

    WHERE yourDateColumn > DATEADD(DAY, -7, GETDATE()) ;
    
  15. ==============================

    15.당신은 또한 쉬운 방법을 사용할 수 있습니다

    당신은 또한 쉬운 방법을 사용할 수 있습니다

    SELECT *
    FROM   inventory
    WHERE  YEARWEEK(`modify`, 1) = YEARWEEK(CURDATE(), 1)
    
  16. ==============================

    16.나는 일요일 주 시작이 사용 :

    나는 일요일 주 시작이 사용 :

    SELECT id FROM tbl
    WHERE
    date >= curdate() - INTERVAL DAYOFWEEK(curdate())+5 DAY  
    AND date < curdate() - INTERVAL DAYOFWEEK(curdate())-2 DAY
    
  17. ==============================

    17.지난 달, 작년, 최근 15 일 같은 더 많은 예를 들어, 지난 3 개월 동안

    지난 달, 작년, 최근 15 일 같은 더 많은 예를 들어, 지난 3 개월 동안

    지난 주 기록을 가져 오기

    MySQL 데이터베이스 테이블에서 지난 주 기록을 가져 오는에 대한 MySQL의 아래 쿼리를 사용.

    SELECT name, created_at 
    FROM employees
    WHERE
    YEARWEEK(`created_at`, 1) = YEARWEEK( CURDATE() - INTERVAL 1 WEEK, 1)
    
  18. ==============================

    18.이 시도:

    이 시도:

    Declare @Daytype varchar(15),
            @StartDate datetime,
            @EndDate datetime
    set @Daytype = datename(dw, getdate())
    
    if @Daytype= 'Monday' 
        begin
            set @StartDate = getdate()-7 
            set @EndDate = getdate()-1
    
        end
    
    
    else if @Daytype = 'Tuesday'
    
        begin
            set @StartDate = getdate()-8 
            set @EndDate = getdate()-2
    
        end
    Else if @Daytype = 'Wednesday'
        begin
            set @StartDate = getdate()-9
            set @EndDate = getdate()-3
        end
    Else if @Daytype = 'Thursday'
        begin
            set @StartDate = getdate()-10 
            set @EndDate = getdate()-4
        end
    
    Else if @Daytype = 'Friday'
    
        begin
            set @StartDate = getdate()-11
            set @EndDate = getdate()-5
    
        end
    
    Else if @Daytype = 'Saturday'
    
        begin
            set @StartDate = getdate()-12
            set @EndDate = getdate()-6
    
        end
    
    Else if @Daytype = 'Sunday'
    
        begin
            set @StartDate = getdate()-13
            set @EndDate = getdate()-7
    
        end
    
     select @StartDate,@EndDate
    
  19. ==============================

    19.이미 날짜를 알고 있다면 당신은 간단하게 다음과 같이 사이에 사용할 수 있습니다 :

    이미 날짜를 알고 있다면 당신은 간단하게 다음과 같이 사이에 사용할 수 있습니다 :

    SELECT id    
    FROM `Mytable`    
    where MyDate BETWEEN "2011-05-15" AND "2011-05-21"
    
  20. from https://stackoverflow.com/questions/6089960/mysql-query-to-select-data-from-last-week by cc-by-sa and MIT license