2012-02-13 7 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 

として示されているdatetime型として宣言されています?

答えて

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

ここで問題は、日付の重複が発生していることです。私は、同じ時刻を別々に取ると、時間が異なる場合に同じ日付が2回発生するからだと思います。 – ksg

+0

あなたは 'tblFormno2'からdate_submit_innerとして別のキャスト(date_submitとして日付)を選択するように変更された同じ日付のために異なる*時間*があるかどうかを調べるでしょう –

+0

"日付は定義されたシステムではありません私はデータ型がないと思うmssqlserver2005の日付のような – ksg

1

order byは、date_submitの表からソートされていません。 Isは名前付き出力列でソートしています(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

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 
関連する問題