MYSQL - Order timestamp values ascending in order, from newest to oldest?

家住魔仙堡 提交于 2019-11-26 23:35:44

问题


I have come across a problem when trying to order certain results by their timestamp value.

I would like these results displayed from the newest, to the oldest based on the timestamp values.

So to explain this, imagine that there were 3 results:

2012-07-11 17:34:57
2012-07-11 17:33:28
2012-07-11 17:33:07

This result set would be what I would require, but given the following query

SELECT timestamp
FROM randomTable
ORDER BY timestamp ASC

I get:

2012-07-11 17:34:57
2012-07-11 17:33:07
2012-07-11 17:33:28

This is as it is sorted by numerical value and 07 comes before 28.

If i sort in descending order I get

2012-07-11 17:33:07
2012-07-11 17:33:28
2012-07-11 17:34:57

Which is what I am looking for... But it is in reverse.

So my question is fairly simple, how could I sort these values in ascending order as I have described?

EDIT:

EDIT2:

CREATE TABLE `user_quotations` (
 `id` int(100) NOT NULL AUTO_INCREMENT,
 `quoteNumber` int(100) NOT NULL,
 `lastModified` datetime NOT NULL,
 `userId` int(100) NOT NULL,
 `manufacturer` varchar(250) COLLATE latin1_general_ci NOT NULL,
 `modelNumber` varchar(250) COLLATE latin1_general_ci NOT NULL,
 `productDesc` varchar(1000) COLLATE latin1_general_ci NOT NULL,
 `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`),
 KEY `quoteNumber` (`quoteNumber`,`lastModified`,`userId`,`manufacturer`,`modelNumber`,`timestamp`),
 KEY `productDesc` (`productDesc`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci

回答1:


Your query :

SELECT timestamp
FROM randomTable
ORDER BY timestamp ASC;

is perfect. But I doubt about the results you have presented in your posting. You posted :

2012-07-11 17:34:57
2012-07-11 17:33:07
2012-07-11 17:33:28

But results in your sqlbox shows :

2012-07-11 17:34:57
2012-07-15 17:33:07
2012-07-15 17:33:28

Which are perfectly right.

Is that a typo error in your posting?
If no, then try the following :

SELECT timestamp( `timestamp` ) as 'timestamp'
FROM randomTable
ORDER BY 1 ASC;



回答2:


Check your create statement for the table. I expect your timestamp column is really a string.

Show create table tablename;



回答3:


if you write the query as:

select q.`timestamp`
from user_quotations as q
order by q.`timestamp`
limit 30

you should have them ordered properly.

If not, there is a problem with the timestamp data. Look for leading/ trailing spaces, odd characters, etc.




回答4:


screen shot shows two of the results from 15th and one from 11th. Probably affects the order a wee bit.



来源:https://stackoverflow.com/questions/11493463/mysql-order-timestamp-values-ascending-in-order-from-newest-to-oldest

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!