[SQL] SQL 쿼리 가까운 날짜를 표시합니다?
SQLSQL 쿼리 가까운 날짜를 표시합니다?
나는 날짜의 관점에서 가장 가까운 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.
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.
SELECT * FROM table WHERE EVENT_START_DATE >= NOW() ORDER BY EVENT_START_DATE LIMIT 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.나는 이것이 당신이 찾고있을 것 무엇을 가정합니다. 그것은 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.
SELECT event_id FROM Table ORDER BY EVENT_START_DATE LIMIT 3
from https://stackoverflow.com/questions/6186962/sql-query-to-show-nearest-date by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 문자열을 varbinary (0) | 2020.04.19 |
---|---|
[SQL] 어떻게 Linq에 SQL로 표현에서 SQL GETDATE ()와 DATEADD ()를 사용합니까? (0) | 2020.04.19 |
[SQL] 오라클의 다른와 저장 프로 시저를 호출 (0) | 2020.04.19 |
[SQL] SQLSERVER에서 날짜와 타임 스탬프의 차이? [복제] (0) | 2020.04.19 |
[SQL] 자체 참조 테이블에 SQL 재귀 쿼리 (오라클) (0) | 2020.04.19 |