2012-02-13 33 views
4

我想从名为tblFormno2的dbtable中按升序获取不同的日期。为此,我编写了以下查询,但其工作不正常。如何在mssqlserver中对日期进行排序

柱date_submit被声明为日期时间

select distinct (convert(nvarchar(100),date_submit,103)) as dob from 
tblFormno2 order by dob asc 

在这里,输出被示为

05/07/2011 
06/03/2011 
06/07/2011 
07/04/2011 
08/01/2012 

代替

06/03/2011 
07/04/2011 
05/07/2011 
06/07/2011 
08/01/2012 

如何解决这个问题???

回答

1

如何

select convert(nvarchar(10), date_submit_inner, 103) as date_submit from 
(
    select distinct date_submit as date_submit_inner from tblFormno2 
) as T 
order by T.date_submit_inner asc 
+0

这里的问题是日期重复发生。我认为它是因为当我们在这里采取不同的时间时,情况不同时发生两次。 – ksg 2012-02-13 17:44:50

+0

你会得到dups是否有不同的*时间*为同一日期如此更改'选择不同的演员(date_submit作为日期)作为date_submit_inner从tblFormno2' – 2012-02-13 17:46:46

+0

我收到一个错误为“类型日期不是一个定义的系统我认为在mssqlserver2005中没有数据类型,如日期 – ksg 2012-02-13 17:52:37

1

您的order by未从表中排序date_submit。是由date_submit的命名输出栏进行排序。如果你按顺序指定表名,它应该可以工作。如果这不起作用,那么尝试给出与表格列不同的名称。

select distinct (Convert(nvarchar(100),date_submit,103)) as date_submit 
from tblFormno2 
order by tblFormno2.date_submit asc 
+0

是的,它没有按照date_submit从表中排序。为了避免混淆,我修改了上面的查询。我试过了,但是我得到了错误,因为“如果指定了SELECT DISTINCT,ORDER BY项必须出现在选择列表中“。 – ksg 2012-02-13 17:38:04

0
create table #temp 
(
DT varchar(20) 
) 

Insert into #temp(DT)values('13/05/2011') 
Insert into #temp(DT)values('03/06/2011') 
Insert into #temp(DT)values('07/06/2011') 
Insert into #temp(DT)values('04/07/2011') 
Insert into #temp(DT)values('01/08/2011') 

Select * from #temp 

Below are the database records... 

enter image description here

select (convert(varchar,Dt,107)) t into #t from #temp 

select * from #t 

enter image description here

drop table #temp 
drop table #t 
相关问题