15

特定の結果をタイムスタンプ値で並べ替えようとすると、問題が発生します。

タイムスタンプの値に基づいて、これらの結果を最新のものから古いものへと表示したいと思います。

これを説明するために、3 つの結果があったとします。

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

この結果セットは私が必要とするものですが、次のクエリを考えると

SELECT timestamp
FROM randomTable
ORDER BY timestamp ASC

私は得る:

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

これはそのまま数値順で07前に来28ます。

降順でソートすると、

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

これは私が探しているものです...しかし、それは逆です。

私の質問はかなり単純です。説明したように、これらの値を昇順で並べ替えるにはどうすればよいですか?

編集:

問題

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
4

4 に答える 4

19

あなたの質問:

SELECT timestamp
FROM randomTable
ORDER BY timestamp ASC;

完璧です。しかし、私はあなたがあなたの投稿で提示した結果について疑問を持っています。あなたが投稿した:

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

しかし、sqlboxの結果は次のように表示されます。

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

これは完全に正しいです。

それはあなたの投稿のタイプミスですか?
いいえの場合は、次のことを試してください。

SELECT timestamp( `timestamp` ) as 'timestamp'
FROM randomTable
ORDER BY 1 ASC;
于 2012-07-15T16:53:02.750 に答える
4

テーブルの作成ステートメントを確認してください。タイムスタンプ列は実際には文字列であると思います。

Show create table tablename;
于 2012-07-15T16:20:27.227 に答える
1

クエリを次のように記述した場合:

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

それらを適切に注文する必要があります。

そうでない場合は、タイムスタンプ データに問題があります。先頭/末尾のスペース、奇妙な文字などを探します。

于 2012-07-15T16:30:52.380 に答える