2013-02-11 45 views
-1

我有一个网站,其中包含新闻数据,我想按时间显示最新的数据, 我有字段column_time包含8个数据。为什么当我使用这个SQL:datetime order by

select * from table_name order by waktu desc 

是结果是:

28 Jan 2013 | 15:36:47 
28 Jan 2013 | 15:30:48 
27 Jan 2013 | 21:38:36 
27 Jan 2013 | 21:38:32 
27 Jan 2013 | 21:38:29 
11 Feb 2013 | 20:41:05 
11 Feb 2013 | 20:40:37 
11 Feb 2013 | 20:36:11 

,而不是这个?

11 Feb 2013 | 20:41:05 
11 Feb 2013 | 20:40:37 
11 Feb 2013 | 20:36:11 
28 Jan 2013 | 15:36:47 
28 Jan 2013 | 15:30:48 
27 Jan 2013 | 21:38:36 
27 Jan 2013 | 21:38:32 
27 Jan 2013 | 21:38:29 
+5

什么是此列 – Satya 2013-02-11 14:01:14

+0

如果你想订购的数据类型,你为什么用waktu订购?你的问题不清楚。 – usr 2013-02-11 14:07:35

+0

是的,你能告诉我们什么是“waktu”列的数据类型? – Simon 2013-02-11 14:08:45

回答

3

的列进行排序等字符数据,类型varchartext
您可能想要使用timestampdatetime作为数据类型,具体取决于您的秘密RDBMS。

+0

thx答案,但我没有谈论类型数据,如果我使用日期时间这绝对可以正确地命令。我谈论包含日期但不能正确排序的字段(text/varchar)。任何想法? – Niinii 2013-02-11 14:34:31

+1

@DonnyAgus:好吧,**我**正在谈论数据类型,因为您可以使用正确的数据类型获得所需的排序顺序。也请告诉我们你正在使用的RDBMS。 – 2013-02-11 14:38:37

0

试试这个方法:最新记录(不只是时间)DEMO - Converting to DATETIME)订购

Select * from table_name 
Order by convert(Datetime,replace(your_column,' | ',' ')) desc 

OR如果你只需要顺序按时间不论日期再使用; (您也可以转换成时间,如果你在上面的SQL服务器2008)

Order by convert(Datetime, substring(your_column, 
     charindex('|',your_column,1)+2,len(your_column))) desc