答案 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 ) );
希望这对您有所帮助。