Сортировка по дате и времени в порядке убывания? - PullRequest
35 голосов
/ 01 марта 2012

все, что я хочу отобразить последние 5 введенных данных для конкретного идентификатора.Мой sql запрос:

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 - это DATETIME

. Показывает последние 5 записей, отсортированных по дате, а не по времени.В тот же день происходит сортировка по алфавиту.

Предположим, у меня есть 3 записи в одну и ту же дату с разным временем

Допустим,

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

после запроса вышеуказанного запроса

что я получил это

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

Сортировать по дате, затем по алфавиту

Что мне нужно, это ..

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

Сортировать по дате и временитакже ...

Ответы [ 7 ]

66 голосов
/ 01 марта 2012

Если вы хотите, чтобы последние 5 строк были упорядочены в порядке возрастания, вам нужен подзапрос:

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

Прочитав вопрос в 10-й раз, это может быть (просто возможно) то, что вы хотите. Упорядочить по дате по убыванию, а затем упорядочить по времени (в тот же день) по возрастанию:

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
19 голосов
/ 01 марта 2012

установка UNIX_TIMESTAMP сделает свое дело.

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
3 голосов
/ 01 марта 2012
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» означает нисходящий, но вам нужен возрастающий порядок («ASC»).

2 голосов
/ 01 марта 2012
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

Попробуйте.

1 голос
/ 11 сентября 2015

Это один из самых простых способов сортировки записи по дате:

SELECT  `Article_Id` ,  `Title` ,  `Source_Link` ,  `Content` ,  `Source` , `Reg_Date`, UNIX_TIMESTAMP(  `Reg_Date` ) AS DATE
FROM article
ORDER BY DATE DESC 
1 голос
/ 01 марта 2012

Если вы имеете в виду, что вы хотите сначала отсортировать по дате, а затем по именам

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

Сначала будут отсортированы записи по дате, затем по именам

0 голосов
/ 23 апреля 2018

Я использовал более простое решение, найденное частично здесь:
Как отсортировать детали с помощью даты и времени на сервере sql?
Я использовал этот запрос, чтобы получить свои результаты:

SELECT TOP (5) * FROM My_Table_Name WHERE id=WhateverValueINeed ORDER BY DateTimeColumnName DESC

Это более прямолинейно и работает для меня.

Обратите внимание: столбец Date имеет тип "datetime"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...