54 Stimmen

Sortieren nach Datum und Uhrzeit in absteigender Reihenfolge?

A Ich möchte die letzten 5 eingegebenen Daten für eine bestimmte ID anzeigen. Meine Sql-Abfrage lautet,

SELECT id, name, form_id, DATE(updated_at) as date
  FROM wp_frm_items
  WHERE user_id = 11 && form_id=9
  ORDER BY updated_at DESC

updated_at ist DATETIME

Die letzten 5 Einträge werden nach Datum und nicht nach Zeit sortiert angezeigt. Bei gleichem Datum wird dann alphabetisch sortiert.

Angenommen, ich habe 3 Einträge an demselben Datum mit unterschiedlicher Uhrzeit

sagen wir mal

Ajay 1/3/2012 1:15
John 1/3/2012 1:00
Bony 1/3/2012 1:10

nach Abfrage der obigen Abfrage

Was ich habe, ist

Ajay 1/3/2012 1:15
Bony 1/3/2012 1:10
John 1/3/2012 1:00

Nach Datum sortieren, dann alphabetisch nach

Was ich will, ist dies

John 1/3/2012 1:00
Bony 1/3/2012 1:10
Ajay 1/3/2012 1:15

Auch nach Datum und Uhrzeit sortiert...

87voto

ypercubeᵀᴹ Punkte 109378

Wenn Sie die letzten 5 Zeilen in aufsteigender Reihenfolge benötigen, brauchen Sie eine Unterabfrage:

SELECT *
FROM
    ( SELECT id, name, form_id, DATE(updated_at) AS updated_date, updated_at
      FROM wp_frm_items
      WHERE user_id = 11 
        AND form_id=9
      ORDER BY updated_at DESC
      LIMIT 5
    ) AS tmp
ORDER BY updated_at

Nachdem ich die Frage zum 10. Mal gelesen habe, könnte dies (nur vielleicht) das sein, was Sie wollen. Sortierung nach Datum absteigend und dann nach Zeit (am gleichen Datum) aufsteigend:

SELECT id, name, form_id, DATE(updated_at) AS updated_date
FROM wp_frm_items
WHERE user_id = 11 
  AND form_id=9
ORDER BY DATE(updated_at) DESC
       , updated_at ASC

24voto

tariq Punkte 456

Die Eingabe des UNIX_TIMESTAMP ist ausreichend.

SELECT id, NAME, form_id, UNIX_TIMESTAMP(updated_at) AS DATE
    FROM wp_frm_items
    WHERE user_id = 11 && form_id=9
    ORDER BY DATE DESC

8voto

Māris Kiseļovs Punkte 16319
SELECT id, name, form_id, DATE(updated_at) as date
FROM wp_frm_items
WHERE user_id = 11 && form_id=9
ORDER BY date ASC

"DESC" steht für absteigend, aber Sie brauchen aufsteigende Reihenfolge ("ASC").

3voto

Shakti Singh Punkte 81441
SELECT * FROM (
               SELECT id, name, form_id, DATE(updated_at) as date
               FROM wp_frm_items
               WHERE user_id = 11 && form_id=9
               ORDER BY updated_at DESC
             ) AS TEMP
    ORDER BY DATE(updated_at) DESC, name DESC

Probieren Sie es aus.

2voto

dejjub-AIS Punkte 1389

Wenn Sie meinen, dass Sie zuerst nach Datum und dann nach Namen sortieren möchten

SELECT id, name, form_id, DATE(updated_at) as date
  FROM wp_frm_items
  WHERE user_id = 11 && form_id=9
  ORDER BY updated_at DESC,name ASC

Dadurch werden die Datensätze zuerst nach Datum und dann nach Namen sortiert

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X