时间:2010-07-26 01:05:21

标签: mysql datetime sql-order-by

9 个答案:

答案 0 :(得分:22)

答案 1 :(得分:11)

如果您想先将数据列为最新的eventdate,那么如果存在相同日期的记录 数据将按时间排序,即最晚时间,

您可以尝试以下

select * from my_table order by eventDate DESC, eventHour DESC

答案 2 :(得分:3)

答案 3 :(得分:3)

答案 4 :(得分:1)

答案 5 :(得分:1)

按ID降序排序。

<?php $sql = "SELECT * FROM posts ORDER BY id DESC?>

这应该有效

答案 6 :(得分:0)

首先,在不同的领域保存日期和时间是不好的做法。

无论如何,假设您以正确的格式保存日期/时间。 (即:日期格式为yyyy-mm-dd,时间为hh:ss)

首先需要连接日期和时间以获取日期时间值。 从技术上讲,你可以在Datetime字段上进行ORDER BY,但这不是一个好习惯。 在我们运行CONCAT的情况下,因此将其转换为字符串,因此结果集将是错误的。 所以你需要将它转换为UNIX TIMESTAMP来进行排序。

在ORDER by子句之前在datetime字段上运行UNIX_TIMESTAMP的好习惯。

您可以使用以下查询。

选择column1,column2, UNIX_TIMESTAMP(CONCAT(event_date,'',event_time))作为unixtimestamp 来自table_name 按unixtimestamp desc排序;

注意:(在CONCAT函数中,event_date和event_time之间有一个空格。这里没有正确显示。)

答案 7 :(得分:0)

这是对我有用的最佳方式,只需将日期转换为函数 to_days(date)的天数,以及函数 TIME_TO_SEC(时间)的秒数 ,例如:

SELECT 
    nv.destac,
    DATE_FORMAT(nv.date_nov , '%d-%m-%Y %T') as date_order, 
    TO_DAYS(nv.date_nov) as days,
    TIME_TO_SEC(TIME(nv.date_nov)) as seconds

FROM 
    newsviews nv
WHERE 
     nv.active
ORDER BY 
      nv.destac DESC,  days DESC, seconds DESC ;

Esta es la mejor formaquefuncionóparamí,sóloconvertirla fechaalnúmerodedíasconlafunción TO_DAYS(fecha) y el tiempo a la cantidad de segundos con la funcion TIME_TO_SEC (tiempo)

SELECT 
    nv.destacar,
    DATE_FORMAT(nv.fecha_nov , '%d-%m-%Y %T') as fecha_orden, 
    TO_DAYS(nv.fecha_nov) as dias,
    TIME_TO_SEC(TIME(nv.fecha_nov)) as segundos

FROM 
    novedades nv
WHERE 
     nv.activa
ORDER BY 
      nv.destacar DESC,  dias DESC, segundos DESC ;

答案 8 :(得分:0)

为什么不使用TIMESTAMP将两个字段都加入?

首先,我们需要将eventDate字段转换为DATE,为此,我们将使用DATE()函数:

SELECT DATE( eventDate );

之后,将eventHour转换为TIME,如下所示:

SELECT TIME( eventHour );

下一步是将这两个函数合并为TIMESTAMP函数:

SELECT TIMESTAMP( DATE( eventDate ), TIME( eventHour ) );

是的,但是您不需要SELECT而是ORDER BY,因此完整的示例如下:

SELECT e.*, d.eventDate, t.eventHour
FROM event e
JOIN eventDate d
     ON e.id = d.id
JOIN eventTime t
     ON e.id = t.id
ORDER BY TIMESTAMP( DATE( d.eventDate ), TIME( t.eventHour ) );

希望这对您有所帮助。