sql разница в две даты - PullRequest
       3

sql разница в две даты

0 голосов
/ 17 мая 2018

На сервере sql у меня есть две таблицы:

Tran_Ex

Transactions

У них обоих есть customer_id, который является ключом для объединения таблиц.

Я хочу найти разницу в РАБОЧИХ ДНЯХ Date_Reported (от транзакций) от Date_Received (от Tran_ex). Я хотел бы дополнительный столбец с этими цифрами:

например

Date Reported | Date Received | Difference in days

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Использование DATEDIFF () function ()

Вы можете получить Рабочий день (с понедельника по пятницу) Отличие от этого запроса, для банковских выходных вам нужна отдельная логика,

Select Date_Reported, 
Date_Received ,
(DATEDIFF(dd, Date_Reported, Date_Received) + 1)
-(DATEDIFF(wk, Date_Reported, Date_Received) * 2)
-(CASE WHEN DATENAME(dw, Date_Reported) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, Date_Received) = 'Saturday' THEN 1 ELSE 0 END)
 AS Working_days_Difference
from Tran_Ex as tx
inner join
Transactions as tr
on(tx.customer_id = tr.customer_id)

Изменен запрос предложений на основе @scsimon, так как они не используют сокращения.

SELECT Date_Reported, 
   Date_Received , 
   datediff(day,((CASE WHEN Datename(weekday, Date_Reported) = 'Sunday' THEN 1 ELSE 0  END ) - (CASE WHEN Datename(weekday, Date_Received ) = 'Saturday' THEN 1 ELSE 0 END )),Datediff(day,(Datediff(week, Date_Reported, Date_Received ) * 2 ), 
   (Datediff(day, Date_Reported, Date_Received ) + 1 )))
   AS Working_days_Difference

    from Tran_Ex as tx
    inner join
    Transactions as tr
    on(tx.customer_id = tr.customer_id)
0 голосов
/ 17 мая 2018

Использование DATEDIFF() Функция:

select t.Date_Reported, t1.Date_Received,
       datediff(day, t.Date_Reported, t1.Date_Received) [Difference in days]
from Tran_Ex tx
inner join Transactions t on t.customer_id  = tx.customer_id; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...