2015-09-01 3 views
-1

У меня есть набор данных, который имеет следующий формат:Сортировка данных DateTime в SQL Server 2008

LocalDate LocalTime SourceID UtcTimestamp 
04/30/2013 09:05:10 sourceID1 2013-04-29 23:05:00.707 
04/30/2013 09:34:10 sourceID2 2013-04-29 23:34:00.707 
04/30/2013 09:10:56 sourceID3 2013-04-29 23:10:00.067 
01/17/2014 10:41:31 sourceID4 2014-01-17 00:41:31.147 

Мне нужно сортировать вышеуказанные данные в формате нисходящим. Моя первая попытка состояла в том, чтобы «ORDER BY» LocatDate, а затем LocalTime. Однако тип данных для «LocalDate» и «LocalTime» является varchar. Затем я попытался следующее поскольку UtcTimestamp тип данных DateTime:

SELECT TOP 10000 ManagementRecords.LocalDate, ManagementRecords.LocalTime, ManagementRecords.SourceSUID, ManagementRecords.UtcTimestamp 
FROM DB.dbo.ManagementRecords ManagementRecords 
ORDER BY ManagementRecords.UtcTimestamp DESC 

Однако выше не работает. Процесс «Выполнение запроса» никогда ничего не возвращает. Зачем? Я бы очень признателен за помощь в этом.

+1

Запрос Вы отправили не тот, который вы на самом деле использовать, так как он имеет опечатка, что бы предотвратить (в частности, вы используете псевдоним 'table' как в' SELECT', так и 'ORDER BY', но ваше предложение' FROM' присваивает псевдоним 'tables' (множественное число). Если вы хотите, чтобы мы помогали решать проблемы с ваш оператор SQL, скопируйте и вставьте ** фактический ** оператор SQL, а не то, что вы намереваетесь на лету или введите вручную (где вы можете ввести опечатки или неправильный синтаксис). –

+0

Спасибо, я сейчас отредактирую его. – SSF

+0

Когда я избавлюсь от «ORDER BY» atement Я получаю результат назад для запроса, однако, когда я добавляю «ORDER BY», я ничего не получаю. – SSF

ответ

0

Для вашего второго подхода вы используете псевдоним для таблицы как таблицы, поэтому, если вы хотите явно ссылаться на table_alias.column, используйте таблицы, псевдоним, который вы назначили таблице. Но в вашем случае, я думаю, вам не нужно использовать псевдоним.

И для сортировки по localDate, localTime, используйте функцию convert (date, localDate, 1). Так подвести итог, ваш запрос должен выглядеть следующим образом: выберите * из db.dbo [таблица] упорядочить по обращенного (дата, LocalDate, 1)

+0

Спасибо. Я заметил, что. Я отредактировал заявление. В моем первоначальном заявлении это не было проблемой, поскольку, когда я избавился от оператора ORDER BY, я получил результат для запроса, однако, когда я добавляю «ORDER BY», я ничего не получаю. – SSF

+0

старайтесь не использовать псевдоним, удачи – Andrew

1

Вы смотрели на этот план, который генерируется. ваш sql? Если вы заказываете не индексированный столбец, то он может выполнять полное сканирование таблицы. В зависимости от того, насколько велика ваша таблица, это может занять некоторое время, пока результаты не вернутся.

Если вы можете изменить таблицу, вы можете попробовать следующее, чтобы добавить индекс:

CREATE NONCLUSTERED INDEX ManagementRecords_TimeStamp ON DB.dbo.ManagementRecords ManagementRecords(UtcTimestamp); 
+0

Я считаю, что вы правы, сейчас я смотрю план выполнения. Как определить, в какой таблице отсутствует индексация в случае, когда выполняется несколько таблиц? – SSF

+0

... где запрашивается несколько таблиц? Это должен был быть другой вопрос, не так ли? этот вопрос относится к одному запросу таблицы –

Смежные вопросы