2013-05-08 8 views
3

Оригинал Вопросдата Вычесть из дня поля

Мне нужно написать заявление Microsoft SQL, где я вычитать дату от числа дней из другой таблицы. Таким образом, приведен пример таблицы ниже:

Table 1 (date)   Table 2 (number of days) 
2013-05-08 23:59:13.000  7 
2013-05-08 23:59:16.000  7 
2013-05-08 23:59:06.000  7 

Любая помощь будет оценена по достоинству.

Обновленный Вопрос

только два деталь я должен работать с следующая информация:

enter image description here

Мне нужно знать, как долго счет-фактура был в очереди счета-фактуры. TimeoutDate - это когда счет-фактура истекает в очереди, а TimeOutDays - это длина дней, в течение которых эта очередь предоставляется до истечения времени ожидания, но это рабочие дни, поэтому исключая выходные.

Итак, если вы вычислить на основе этой информации, счет был в очереди на 8 рабочих дней < - это ответ мне нужно получить из запроса.

Экстренная Информация

Счет вошел в систему 04/30/2013, но так как веб-приложение не считается день накладная вошел в систему, тайм-аут счетчик начинается на следующий день после, который 05/1/2013. Надеюсь, это объясняет немного яснее!

У меня есть быстрый запрос, но это не поможет, так как он не показывает, что мне нужно, но в действительности ниже результаты того, что мне нужно:

enter image description here

+1

Вы можете использовать DATEADD Function, HTTP: // msdn.microsoft.com/en-us/library/ms186819.aspx. Однако как вы собираетесь присоединиться к этим двум столам? – EricZ

ответ

1

Попробуйте

SELECT DATEADD(day, -(t2.days), t1.datefield) new_date 
    FROM table1 t1 JOIN 
     table2 t2 ON t1.id = t2.id 

Выход:

|     NEW_DATE | 
------------------------------ 
| May, 01 2013 23:59:13+0000 | 
| May, 01 2013 23:59:16+0000 | 
| May, 01 2013 23:59:06+0000 | 

SQLFiddle

UPDATE: Решение полностью измененном вопрос

SELECT timeoutdate, 
     timeoutdays, 
     timeoutdays 
     -((DATEDIFF(dd, GETDATE(), timeoutdate) + 1) 
     -(DATEDIFF(wk, GETDATE(), timeoutdate) * 2) 
     -(CASE WHEN DATENAME(dw, GETDATE()) = 'Sunday' THEN 1 ELSE 0 END) 
     -(CASE WHEN DATENAME(dw, GETDATE()) = 'Saturday' THEN 1 ELSE 0 END)) daysinqueue 
FROM table1 

Выходные:

|    TIMEOUTDATE | TIMEOUTDAYS | DAYSINQUEUE | 
------------------------------------------------------- 
| 2013-05-14 23:59:13.000 |   10 |   9 | 

SQLFiddle

Благодаря @CMS для solution для получения количества рабочих дней между двумя датами

+0

Благодарю вас обоих, я попробую и дам вам знать, как все прошло! – Anon

+0

@ Аньон Помог ли это? Вам нужна дополнительная помощь по вашему вопросу? – peterm

+0

Извините, я еще не проверил его, но скоро проверил его. Сообщите, спасибо за продолжение. – Anon

0

Вы можете попробуйте что-то вроде этого

Select DATEADD(month, -(Table2.day) , Table1.date) 
FROM Table1 Inner Join Table2 
ON Table1.Col=Table2.Col 

Конечно, вы можете изменить соединение согласно вашей структуре.

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