2016-08-18 2 views
-3

У меня есть таблица A с двумя столбцами (number varchar(600),Date_ varchar(800)) Теперь я должен показать последние 10 номеров по дате_.Как отобразить последние 10 номеров в sql

SELECT top(10) Number,Date FROM A ORDER BY Date_ DESC, 

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

я хочу результат, как это.

10,2/2/2016 
22,1/2/2016 
10,31/1/2016 
20,30/1/2016 
30,29/1/2016 
23,28/1/2016 
20,27/1/2016 
11,26/1/2016 
18,25/1/2016 
62,24/1/2016 
56,23/1/2016 
54,22/1/2016 
44,21/1/2016 

Я получаю этот результат за -/1/2016 месяц, но не для -/2/2016. так любезно помогите.

+9

Вы должны начать с изменения типа данных таблиц на 'integer' и' date' –

+1

'' Я получаю этот результат за -/1/2016 месяц, но не для -/2/2016 "' - Что делает это даже означает? Что случилось с результатом? Обратите внимание, что ваши данные являются данными 'varchar', поэтому они будут сортироваться по алфавиту. – David

+0

измените тип столбца даты на дату вместо varchar, и ваша проблема будет решена. – Breeze

ответ

0

Попробуйте ниже сценарий

SELECT top(10) Number,Date 
    FROM A 
    ORDER BY convert(datetime,Date,103) DESC 
+0

txs ... он работал..txs еще раз –

0

Если вы не хотите/не можете изменить структуру своей таблицы, вам необходимо использовать Parsing.

SELECT TOP 10 PARSE(Number AS int) AS Number, 
       PARSE(Date AS datetime2) AS Date 
FROM A 
ORDER BY Date DESC 

Вам может понадобиться сделать PARSE в вашем ORDER BY, а также.

0

Просто небольшое изменение в код должен исправить эту

ВЫБРАТЬ верхний (10) Номер, дата ОТ ORDER BY CAST (DATE_ как дата) DESC ,

Обычно даты хранятся в виде чисел в Microsoft мире, то есть 1/1/1900 1 1/2/1900 2 1/31/1900 31 и так далее ...

Так меняется ваш varchar к дате (при условии, что в поле не существует барахла) должно исправить это.

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