복붙노트

[SQL] SQL ORDER BY 날짜 문제

SQL

SQL ORDER BY 날짜 문제

이 문제를 해결 좀 도와주세요 수 있습니다. 나는 날짜별로 SQL 쿼리의 결과를 정렬하려고했지만 원하는 결과를받지 못했습니다.

내가 사용 쿼리는 다음과 같습니다

SELECT date FROM tbemp ORDER BY date ASC

결과는 다음과 같습니다

01/02/2009
03/01/2009
04/06/2009
05/03/2009
06/12/2008
07/02/2009

결과는해야한다 :

06/12/2008
03/01/2009
01/02/2009
07/02/2009

나는 위의 형식으로 날짜를 선택해야합니다.

여러분의 도움이 많이 감사합니다.

해결법

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

    1.당신의 날짜 열이없는 타입의 날짜 만 VARCHAR의 것 같다. 당신은 정렬 할 때 날짜로 변환 할 수 있습니다 :

    당신의 날짜 열이없는 타입의 날짜 만 VARCHAR의 것 같다. 당신은 정렬 할 때 날짜로 변환 할 수 있습니다 :

    select date
    from tbemp
    order by convert(datetime, date, 103) ASC
    

    스타일 103 = 일 / 월 / 년 (MSDN)

  2. ==============================

    2.당신의 열이 날짜 열하지만 텍스트 컬럼 (VARCHAR / NVARCHAR 등) 아닌 것처럼 나에게 소리. 당신은 날짜가 아닌 문자열로 데이터베이스에 저장해야합니다.

    당신의 열이 날짜 열하지만 텍스트 컬럼 (VARCHAR / NVARCHAR 등) 아닌 것처럼 나에게 소리. 당신은 날짜가 아닌 문자열로 데이터베이스에 저장해야합니다.

    당신이 어떤 이유로 문자열로 저장해야하는 경우, 예를 들어 정렬 형식으로 저장 YYYY / MM / DD.

    najmeddine에서 볼 수 있듯이, 당신은 모든 액세스에 열을 변환 할 수 있습니다,하지만 난 그렇게 열심히하지 않으려 고합니다. 이 데이터베이스가 더 많은 일을 할 것 - 데이터 자체에 대한 형의 적절한의 데이터를 가능한 때마다 등 적절한 인덱스를 계속 저장할 수 없습니다.

  3. ==============================

    3.당신이 그러나 사용하고 나는 그것을 마이크로 소프트 SQL에서이 방법을 수행 할 것 DBMS 무엇인지 잘 모르겠 :

    당신이 그러나 사용하고 나는 그것을 마이크로 소프트 SQL에서이 방법을 수행 할 것 DBMS 무엇인지 잘 모르겠 :

    select      [date]
    from        tbemp 
    order by    cast([date] as datetime) asc
    
  4. ==============================

    4.이 나를 위해 작동합니다 :

    이 나를 위해 작동합니다 :

    SELECT하여 DateField myTable에 FROM ORDER BY의 CONVERT (DATE,하여 DateField) ASC

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

    5.대답에 따라 당신에게 도움이 될 수 있습니다

    대답에 따라 당신에게 도움이 될 수 있습니다

    SELECT 절에 날짜 식별자 만 사용 TO_CHAR () 함수에 의해 날짜 순서를 수행하고 날짜를 선택 절에 다른 식별자를 사용

    EG

    SELECT TO_CHAR(DISPDATE1,'DD/MM/YYYY') AS DISPDATE,
    SUM(APPLCOUNT) AS APPLIED,
    SUM(CONFCOUNT) AS CONFIRMED
    FROM
        (
            SELECT COUNT(ID) AS APPLCOUNT,
                       0 AS CONFCOUNT,
                       STUDENT.APPLIED_ON AS DISPDATE1
                FROM STUDENT
                WHERE STUDENT.ID = P_ID
                GROUP BY STUDENT.APPLIED_ON
            UNION
                SELECT 0 AS APPLCOUNT,
                       COUNT(ID) AS CONFCOUNT,
                       STUDENT.CONFIRMED_ON AS DISPDATE1
                FROM STUDENT
                WHERE STUDENT.ID = P_ID
                GROUP BY STUDENT.CONFIRMED_ON
        )
    GROUP BY DISPDATE1
    ORDER BY DISPDATE1;
    
  6. ==============================

    6.SELECT CONVERT (CHAR (19), CAST 날짜 AS (일자), 101) 일]으로서 tbemp FROM ORDER BY 변환 (날짜, 날짜, 101) ASC

    SELECT CONVERT (CHAR (19), CAST 날짜 AS (일자), 101) 일]으로서 tbemp FROM ORDER BY 변환 (날짜, 날짜, 101) ASC

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

    7.날 위해이 작품을 사용해보십시오

    날 위해이 작품을 사용해보십시오

    select *  from `table_name` ORDER BY STR_TO_DATE(start_date,"%d-%m-%Y") ASC
    

    어디 시작일은 필드의 이름입니다

  8. ==============================

    8.이것은, MySQL은 PHP에서 당신을 도움이 될 수 있습니다.

    이것은, MySQL은 PHP에서 당신을 도움이 될 수 있습니다.

    //your date in any format
    $date = $this->input->post('txtCouponExpiry');
    
    $day = (int)substr($date, 3, 2);
    $month = (int)substr($date, 0, 2);
    $year = (int)substr($date, 7, 4);
    
    $unixTimestamp = mktime(0, 0, 0, $year, $day, $month);
    
    // insert it into database
    'date'->$unixTimestamp;
    
    //query for selecting  order by date ASC or DESC
    select * from table order_by date asc;
    
  9. ==============================

    9.이 시도

    이 시도

    Order by Convert(datetime,@date) desc
    
  10. ==============================

    10.나는 자손 chonologic 위해 편집 여러 이벤트를 원했고, 난 그냥했다 :

    나는 자손 chonologic 위해 편집 여러 이벤트를 원했고, 난 그냥했다 :

    select 
    TO_CHAR(startdate,'YYYYMMDD') dateorder,
    TO_CHAR(startdate,'DD/MM/YYYY') startdate,
    ...
    from ...
    ...
    order by dateorder desc
    

    그것은 나를 위해 작동합니다. 그러나 반드시 모든 경우에 적합하지 ... 그냥 누군가를 도와 바랍니다!

  11. from https://stackoverflow.com/questions/1545888/sql-order-by-date-problem by cc-by-sa and MIT license