特定の結果をタイムスタンプ値で並べようとすると問題が発生しました。
タイムスタンプ値に基づいて、これらの結果を最新のものから古いものへと表示したいと思います。
これを説明するために、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
あなたのクエリ:
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;
テーブルのcreateステートメントを確認します。タイムスタンプ列は実際には文字列であると思います。
Show create table tablename;
スクリーンショットは、15日の結果のうち2つと11日の結果の1つを示しています。おそらく注文に少し影響します。
クエリを次のように記述した場合:
select q.`timestamp`
from user_quotations as q
order by q.`timestamp`
limit 30
正しく注文してください。
そうでない場合は、タイムスタンプデータに問題があります。先頭/末尾のスペース、奇数文字などを探します。