suneel kumar gupta Ответов: 2

Порядок получения данных по дате и дате должен начинаться с текущей даты в sql.


получить порядок данных по дате и дата должна начинаться с текущей даты в sql

I have some record like 

Thought		Date
A			01 Jan
B			02 Jan
C			03 Jan
….			…..

X			31 Dec

Now I Want To Output like – Current Date(18 Sep 2016)

Thought		Date
P			18 Sep
Q			19 Sep
R			20 Sep
….			……..
X			31 Dec
A 			01 Jan
B			01 Jan
…..			………
Y			01 Sep
…..			……
Z			17 Sep


Что я уже пробовал:

SELECT ThoughtId, CompanyCode, CompanyId, Thought,
 convert(varchar(6),ThoughtDate,106) ThoughtDate 
 ,(case when isnull(IsActive,0)=0 then 'InActive' else 'Active' end)as Status,
  CreatedBy, CreatedDate, ModifyBy, ModifyDate      
FROM  ThoughtofTheDay
WHERE  CompanyId=214      
ORDER BY ABS(DATEDIFF(day, ThoughtDate, GETDATE()))asc



Thought ThoughtDate1 Статус
С 18 Сентября Активный
17 сентября ка-активный
B 19-Sep Активный
B 20-Sep Активный
p 16-Sep активный
i 15-Sep Active
f 21-Sep Active
j 22-Sep активный


В приведенном выше выводе я хочу, чтобы прошедшая дата наступила в будущем
например, 17 Сентября, 16 сентября, 15 сентября должны прийти в 2017 году(16 сентября 2017 года....)

Maciej Los

А что не так с вашим запросом?

suneel kumar gupta

Пожалуйста, проверьте вопрос, я объяснил свои требования с некоторыми примерами.

Karthik_Mahalingam

Всегда использовать  Ответить   кнопка для отправки комментариев / запросов заинтересованному пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

2 Ответов

Рейтинг:
6

Maciej Los

Если я вас правильно понял...


Необходимо изменить порядок сортировки таким образом:

ORDER BY
    CASE WHEN ThoughtDate >= @passeddate AND ThoughtDate < DAYADD(DD, 3, @passeddate) THEN ThoughtDate END ASC,
    CASE WHEN ThoughtDate < @passeddate THEN ThoughtDate END DESC 


Для получения более подробной информации, пожалуйста, смотрите:
SQL Server &#8211; Custom sorting in ORDER BY clause | Sql And Me[^]
Сервер SQL - оператор case в порядке, предусмотренном пунктом порядка с помощью переменной - путь к SQL орган пинал Дэйв[^]
Заказ чехол | SQL с маной[^]


Рейтинг:
0

Wendelius

Если я правильно понял ваш вопрос, вам нужно добавить условие для извлечения только мыслей, начиная с текущей даты, и изменить сортировку. Что-то вроде

SELECT ThoughtId, 
       CompanyCode, 
       CompanyId, 
       Thought,
       convert(varchar(6),ThoughtDate,106) ThoughtDate,
       case 
          when isnull(IsActive,0)=0 then 'InActive' 
          else 'Active' 
       end as Status,
       CreatedBy, 
       CreatedDate, 
       ModifyBy, 
       ModifyDate      
FROM  ThoughtofTheDay
WHERE CompanyId=214      
AND   ThoughtDate >= GETDATE()
ORDER BY ThoughDate ASC


Karthik_Mahalingam

Мика
ОП уже упоминал "дата должна начинаться с текущей даты" таким образом, ваш код должен быть изменен следующим образом: ThoughtDate >= GETDATE()
поправьте меня, если я ошибаюсь.

suneel kumar gupta

Пожалуйста, проверьте вопрос, я объяснил свои требования с некоторыми примерами.

Wendelius

Хорошо, если вам нужны даты с этой даты вперед, просто измените оператор с меньше чем на больше чем. Я изменил пример.

Wendelius

Хорошая мысль, чем ты. Я неправильно понял это требование.

Karthik_Mahalingam

:-)