2012-02-13 2 views
4

Я хочу получить отдельные даты из моей dbtable с именем tblFormno2 в порядке возрастания. Для этого я написал следующий запрос, но не работал должным образом.Как отсортировать дату в mssqlserver

Колонка date_submit объявляется как DateTime

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

+0

Вы будете получать дубликаты, есть разные * раз * на ту же дату, что и изменение на 'select different cast (date_submit as date) как date_submit_inner от tblFormno2' –

+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

Да, это не сортировка по дате_субмит из таблицы. Я изменил приведенный выше запрос, чтобы избежать путаницы. Я пробовал это, но я получаю ошибку, поскольку «ORDER BY items должны появляться в списке выбора, если указан SELECT DISTINCT «. – 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 
Смежные вопросы