itsource

가장 가까운 날짜를 표시하는 SQL 쿼리?

mycopycode 2023. 8. 20. 10:48
반응형

가장 가까운 날짜를 표시하는 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에 대한 것이어야 합니다.

편집: 쿼리는 이후 이벤트만 찾아야 합니다.

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

ABS()즉, 1일 전의 이벤트가 1일 후의 이벤트만큼 가깝다는 의미입니다.아직 발생하지 않은 이벤트만 원하는 경우

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

승인된 응답의 쿼리는 실제로 이전에 선택한 값을 정렬할 뿐 선택하기 전에 필터링하지는 않습니다.하지만 이 질문은 제게 도움이 됩니다.

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

설명: 숫자 10은 일 범위(이후 및 이전 모두)입니다.없이.ABS()이전 또는 미래의 이벤트만 선택할 수 있지만, 가장 가까운 이벤트가 필요했습니다.

이것이 당신이 찾고 있는 것이라고 생각합니다.다른 모든 사람들이 응답하는 것과 비슷합니다.

SELECT EVENT_ID FROM TABLE WHERE EVENT_START_DATE > NOW() ORDER BY ABS(DATEDIFF(EVENT_START_DATE, NOW())) ASC LIMIT 3
SELECT event_id FROM Table ORDER BY EVENT_START_DATE LIMIT 3

언급URL : https://stackoverflow.com/questions/6186962/sql-query-to-show-nearest-date

반응형