2014-12-30 3 views
0

Я пишу зр для получения данных в течение следующих 6 месяцев для конкретного поля даты,Добавление месяца, где положение в SQL

SELECT CR.[Id] AS ClaimId 
    ,CR.[BOLNumber] 
    ,CR.[PRONumber] 
    ,CR.[ClaimNumber] 
    ,CR.[CompanyName] 
    ,c.NAME AS CarrierName 
    ,CR.[DateFiled] 
    ,CONVERT(VARCHAR(10),CR.[DateFiled], 103) AS DateFiledString 
    ,CR.[ClaimDate] AS ClaimReceivedDate 
    ,CONVERT(VARCHAR(10), CR.[ClaimDate], 103) AS ClaimReceivedDateString 
    ,CR.[AmountFiled] 
    ,CR.[Status] AS StatusId 
    ,CR.[SettledAmount] 
FROM CarrierRate.Claims AS CR WITH (NOLOCK) 
WHERE CR.CustomerId = @AccountUserId AND 
CR.Status = @statusType AND CR.ClaimDate < DATEADD(month,6,CR.ClaimDate) 
ORDER BY CR.[Status] ASC 

Поле ClaimDate. Так я делаю это правильно или что-то, что нужно изменить? Пожалуйста, предложите

+0

Чтобы добавить диапазон дат начиная с сегодняшнего дня или с любого момента, необходимо добавить еще одно условие. В противном случае вы получите все результаты, в которых 'ClaimDate' находится до 6 месяцев. –

+1

'CR.ClaimDate BETWEEN GETDATE() И DATEADD (месяц, 6, GETDATE())' обратите внимание, что 'CR.ClaimDate Aron

+0

Я добавил этот 'AND CR.ClaimDate BETWEEN CR.ClaimDate AND DATEADD (месяц, 6, CR.ClaimDate)', так как я хочу выбрать все данные за шесть месяцев ClaimDate –

ответ

0

Вы можете попробовать

CONVERT(DATE, CR.ClaimDate) < DATEADD(MONTH,6,CONVERT(DATE, CR.ClaimDate)) 

только дата считается здесь.

+0

, я добавил это 'AND CR .ClaimDate BETWEEN CR.ClaimDate И DATEADD (месяц, 6, CR.ClaimDate) ', так как я хочу выбрать все данные за шесть месяцев ClaimDate –

0

Используйте ключевое слово BETWEEN, чтобы указать диапазон дат.

WHERE CR.CustomerId = @AccountUserId AND 
CR.Status = @statusType AND 
CR.ClaimDate BETWEEN GETDATE() AND DATEADD(month,6,CR.ClaimDate) 
+0

Кумар обратите внимание на мой комментарий. У вас фактически есть CR.ClaimDate> GETDATE() ', но медленнее из-за недетерминированности. 'x Aron

+0

@Kumar Я добавил это 'AND CR.ClaimDate BETWEEN CR.ClaimDate И DATEADD (месяц, 6, CR.ClaimDate)', так как я хочу выбрать все данные за шесть месяцев ClaimDate –

0
(CR.ClaimDate BETWEEN DATEADD(month,-6,GETDATE()) AND GETDATE() 
    OR @statusType <> 2) 
Смежные вопросы