programing

내림차순 날짜순 정렬 - 월, 일 및 연도

bestprogram 2023. 7. 31. 21:35

내림차순 날짜순 정렬 - 월, 일 및 연도

이것은 바보같이 보이지만, 저는 단지 가장 최근의 날짜가 상단에 있는 주문 날짜 목록이 필요합니다.사용.order by DESC제가 원하는 방식으로 작동하지 않는 것 같습니다.

SELECT     *
FROM         vw_view
ORDER BY EventDate DESC

월, 일 순으로 주문한 날짜를 알려주지만, 1년은 고려하지 않습니다.예:

12/31/2009 

12/31/2008

12/30/2009

12/29/2009

다음과 같은 요구사항:

12/31/2009

12/30/2009

12/29/2009

12/28/2009

등등.

제 생각엔EventDate날짜가 아니라 char 또는 varchar이며, 그렇지 않으면 조항별로 주문해도 괜찮습니다.

CONVERT를 사용하여 값을 날짜로 변경하고 이를 기준으로 정렬할 수 있습니다.

SELECT * 
FROM 
     vw_view 
ORDER BY 
   CONVERT(DateTime, EventDate,101)  DESC

문제는 Sparky가 댓글에서 지적한 것처럼 EventDate 값이 날짜로 변환할 수 없는 경우 쿼리가 실행되지 않는다는 것입니다.

즉, 잘못된 행을 제외하거나 잘못된 행을 결과의 맨 아래로 이동해야 합니다.

잘못된 행을 제외하려면 다음을 추가합니다.WHERE IsDate(EventDate) = 1

나쁜 날짜가 바닥으로 가도록 하려면 사용해야 합니다.CASE

예.

ORDER BY 
    CASE
       WHEN IsDate(EventDate) = 1 THEN CONVERT(DateTime, EventDate,101)
       ELSE null
    END DESC

해라ORDER BY MONTH(Date),DAY(DATE)

사용해 보십시오.

ORDER BY YEAR(Date) DESC, MONTH(Date) DESC, DAY(DATE) DESC

JET DB에서 완벽하게 작동했습니다.

필드가 문자열에 있으므로 날짜 시간으로 변환해야 합니다.

order by CONVERT(datetime, EventDate ) desc

스키마를 변경할 수 있는 권한이 있다고 가정하면 IMO는 기본 데이터 유형을 더 적합한 것으로 변경하는 것입니다(예:dateSQL Server 2008인 경우).

날짜 저장mm/dd/yyyy문자열은 공간 효율성이 떨어지고 정확한 검증이 어려우며 정렬 및 날짜 계산이 불필요하게 번거롭습니다.

필드의 유형은 무엇입니까?EventDate주문이 정확하지 않기 때문에 날짜/시간을 나타내는 유형이 아니라 문자열로 설정되어 있다고 가정합니다.그리고 미국인들이 날짜를 쓰는 방식은 분류하기에 좋지 않습니다.

날짜 형식을 YYYY/MM/DD로 재구성한 경우 이 간단한 문자열 순서를 사용하여 필요한 형식을 지정할 수 있습니다.

또는 SUSTR(store_name, start, length) 명령을 사용하여 정렬 용어를 위 형식으로 재구성할 수 있습니다.

아마도 다음을 사용하여.

SELECT     *
FROM         vw_view
ORDER BY SUBSTR(EventDate,6,4) + SUBSTR(EventDate, 0, 5) DESC

사용해 보세요.

SELECT     *
FROM  vw_view
ORDER BY DATE_FORMAT(EventDate, "%m-%d-%y") DESC

언급URL : https://stackoverflow.com/questions/4676139/order-by-descending-date-month-day-and-year