복붙노트

[SQL] SQL 쿼리 가까운 날짜를 표시합니다?

SQL

SQL 쿼리 가까운 날짜를 표시합니다?

나는 날짜의 관점에서 가장 가까운 3 개 이벤트를 반환하는 MySQL의 쿼리를 작성하는 방법을 알아 내려고 노력하고있어.

이것은 내 테이블 :

EVENT_ID    EVENT_NAME     EVENT_START_DATE(DATETIME)
1           test           2011-06-01 23:00:00
2           test2          2011-06-03 23:00:00
3           test3          2011-07-01 23:00:00
4           test4          2011-08-09 23:00:00
5           test5          2011-06-02 23:00:00
6           test6          2011-04-20 23:00:00

쿼리 결과는 ID의 1,2,5을 위해해야합니다 그래서 그들은 현재 날짜에 비해 발생에 가장 가까운만큼 ..

편집 : 쿼리는 미래의 이벤트를 찾아야한다.

해결법

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

    1.

    SELECT event_id 
    FROM Table 
    ORDER BY ABS( DATEDIFF( EVENT_START_DATE, NOW() ) ) 
    LIMIT 3
    

    이벤트 일일 전 단지 미래의 이벤트 일일 가깝게이라는 ABS ()을 의미합니다. 당신은 아직 일어나지 않은 이벤트를 원하는 경우에, 할

    SELECT event_id 
    FROM Table 
    WHERE EVENT_START_DATE > NOW() 
    ORDER BY EVENT_START_DATE 
    LIMIT 3 
    
  2. ==============================

    2.

      SELECT *
        FROM table
       WHERE EVENT_START_DATE >= NOW()
    ORDER BY EVENT_START_DATE
       LIMIT 3
    
  3. ==============================

    3.허용 대답에서 쿼리는 실제로 그저 이전에 선택하기 전에를 필터링하지, 값을 선택했습니다. 그러나이 쿼리는 나를 위해 작동합니다 :

    허용 대답에서 쿼리는 실제로 그저 이전에 선택하기 전에를 필터링하지, 값을 선택했습니다. 그러나이 쿼리는 나를 위해 작동합니다 :

    SELECT event_id, event_date
    FROM events 
    WHERE ABS(TIMESTAMPDIFF(DAY, event_date, $some_date)) < 10
    ORDER BY event_date
    

    설명 : 수 (10)은 하루 범위 (모두 후 전)이다. ABS없이 () 만 이전 또는 미래의 사건을 선택할 수 있습니다,하지만 난 가장 가까운 필요합니다.

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

    4.나는 이것이 당신이 찾고있을 것 무엇을 가정합니다. 그것은 aswell 모든 사람 elses의 응답과 유사합니다.

    나는 이것이 당신이 찾고있을 것 무엇을 가정합니다. 그것은 aswell 모든 사람 elses의 응답과 유사합니다.

    SELECT EVENT_ID FROM TABLE WHERE EVENT_START_DATE > NOW() ORDER BY ABS(DATEDIFF(EVENT_START_DATE, NOW())) ASC LIMIT 3
    
  5. ==============================

    5.

    SELECT event_id FROM Table ORDER BY EVENT_START_DATE LIMIT 3
    
  6. from https://stackoverflow.com/questions/6186962/sql-query-to-show-nearest-date by cc-by-sa and MIT license