2012-02-13 88 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 
相關問題